* Theo mặc định, các Bộ sưu tập của ToMany không hoạt động ở chế độ Hibernate &JPA. Lỗi là do Jackson đang cố gắng tuần tự hóa OneToMany khi trình quản lý thực thể (còn gọi là phiên trong chế độ ngủ đông) bị đóng. Do đó, không thể truy xuất bộ sưu tập lười biếng.
Spring Boot với JPA theo mặc định cung cấp một OpenEntityManagerInViewFilter
cho EM chính. Điều này cho phép truy cập DB chỉ đọc, nhưng theo mặc định chỉ hoạt động cho EM chính.
Bạn có 3 lựa chọn:
1) Bạn có thể thêm tìm nạp tham gia, ví dụ: FetchMode hoạt động như thế nào trong Spring Data JPA
2) Bạn có thể thêm OpenEntityManagerInViewFilter cho trình quản lý thực thể không phải chính và thêm nó vào ngữ cảnh của bạn.
Xin lưu ý rằng điều này ngụ ý một thách thức, đối với mỗi phiên bản Bar và Foo, ứng dụng của bạn sẽ quay trở lại cơ sở dữ liệu để truy xuất OneToMany. Đây là phần không hoạt động cho Bar, nhưng dành cho Foo. Điều này ngụ ý một vấn đề về khả năng mở rộng (được một số người gọi là vấn đề N + 1) vì đối với mỗi foo và thanh, bạn chạy một truy vấn bổ sung, điều này sẽ làm chậm đối với số lượng Foos và Bars không nhỏ.
3) Một giải pháp thay thế là làm cho bộ sưu tập của bạn trên Bar và Foo háo hức (xem điều này https://docs.oracle.com/javaee/7/api/javax/persistence/OneToMany.html#fetch-- ) nhưng điều này cần được phân tích cẩn thận nếu khả năng mở rộng là mối quan tâm của bạn.
Tôi khuyên bạn nên chọn tùy chọn số 1.