Tôi đang sử dụng ánh xạ đối tượng/biểu đồ đơn giản trong Spring Data Neo4j 2.0, nơi tôi thực hiện các hoạt động liên tục bằng cách sử dụng khung công tác Kho dữ liệu Spring. Tôi đang làm việc với các kho lưu trữ thay vì làm việc với Neo4jTemplate. Tôi tiêm các kho lưu trữ vào bộ điều khiển MVC Spring Web của tôi, và các bộ điều khiển gọi repos trực tiếp. (Không có lớp dịch vụ trung gian - hoạt động của tôi thường là CRUD và truy vấn tìm kiếm.)Cách chính xác để nhận các giao dịch sử dụng ánh xạ đối tượng/đồ thị đơn giản của Spring Data Neo4j?
Khi tôi đọc thao tác, không có vấn đề gì. Nhưng khi tôi viết các hoạt động, tôi nhận được "NotInTransactionException". Sự hiểu biết của tôi là đọc ops trong Neo4j không yêu cầu giao dịch, nhưng viết ops làm.
Cách tốt nhất để nhận giao dịch vào hình ảnh ở đây, giả sử tôi muốn gắn bó với OGM đơn giản là gì? Tôi muốn sử dụng @Transactional, nhưng đặt nó trên các giao diện kho lưu trữ khác nhau không hoạt động. Nếu tôi giới thiệu một tầng dịch vụ trung gian giữa các bộ điều khiển và các kho lưu trữ và sau đó chú thích các hạt dịch vụ bằng @Transactional, thì nó hoạt động, nhưng tôi tự hỏi liệu có một cách đơn giản hơn để thực hiện nó hay không. Nếu không có dữ liệu Spring, tôi thường có quyền truy cập vào các triển khai DAO (kho lưu trữ), vì vậy tôi có thể chú thích các DAO cụ thể bằng @Transactional nếu tôi muốn tránh một tầng dịch vụ chuyển tiếp. Với Spring Data, các Repos được tạo động để không xuất hiện như một lựa chọn.
@Transactional tại Kho lưu trữ-Giao diện sẽ hoạt động. –