1 câu hỏi nhanh về giao dịch kho lưu trữ Spring JPA. Tôi có một dịch vụ mà không được đánh dấu là giao dịch và gọi mùa xuân JPA phương pháp khoGiao dịch kho lưu trữ JPA trong mùa xuân
userRegistrationRepository.deleteByEmail(email);
Và nó được định nghĩa là
@Repository
public interface UserRegistrationRepository extends JpaRepository<UserRegistration, Long> {
UserRegistration findByEmail(String email);
void deleteByEmail(String email);
}
Vấn đề là nó không thành công với "Không EntityManager với giao dịch thực tế có sẵn cho chuỗi hiện tại - không thể xử lý cuộc gọi 'xóa' một cách đáng tin cậy; ngoại lệ lồng nhau là ngoại lệ javax.persistence.TransactionRequiredException ".
Ok, tôi có thể giải quyết nó bằng cách đánh dấu các dịch vụ haydeleteByEmail (..) phương pháp như giao dịch, nhưng tôi chỉ không thể hiểu tại sao nó bị treo bây giờ. Tài liệu mùa xuân cho biết rõ ràng rằng "phương pháp CRUD trên các phiên bản kho lưu trữ được giao dịch theo mặc định." (http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#transactions), nhưng dường như điều này không phải là ... Vì vậy, Tuyên bố này có liên quan đến chỉ các thành viên của CrudRepository
?
ps: dành cho dữ liệu Spring JPA 1.9.4