Я столкнулся с ленивой проблемой инициализации, когда я добавил проект Lombok в свой проект hibernate и использовал его @Getter
и @Setter
в классе сущностей.
Классы сущностей отмечены @Entity
из Javax.persistence, поскольку я использую hibernate 5.
Выпуск трассировки стека : -
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:146)
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:259)
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:73)
at com.capehenry.domain.user.User_$$_jvst52e_9.getId(User_$$_jvst52e_9.java)
at com.capehenry.business.rs.course.SeatRequestResource.validateSeatRequestCancel(SeatRequestResource.java:338)
at com.capehenry.business.rs.course.SeatRequestResource.cancel(SeatRequestResource.java:220)
Все работало нормально с кодом ниже
@Entity
@Audited
@Table(name = "seat_request")
public class SeatRequest extends BaseEntity {
private CourseSchedule courseSchedule;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "courseScheduleId", nullable = false)
public CourseSchedule getCourseSchedule() {
return courseSchedule;
}
public void setCourseSchedule(CourseSchedule courseSchedule) {
this.courseSchedule = courseSchedule;
}
Когда я выполняю searRequest.getCourseSchedule (). GetId (), он работает на уровне покоя вне транзакции.
Как только я изменяю код ниже (добавьте lombok), searRequest.getCourseSchedule (). GetId () в слое отдыха начинает выдавать lazyInitializationException: -
@Entity
@Audited
@Table(name = "seat_request")
@Setter
public class SeatRequest extends BaseEntity {
@ManyToOne(fetch = FetchType.LAZY, optional=false)
@JoinColumn(name = "courseScheduleId", nullable = false)
private CourseSchedule courseSchedule;
ПРИМЕЧАНИЕ: -
1) Я должен в обязательном порядке использовать проект Ломбок
2) Я должен использовать searRequest.getCourseSchedule (). GetId () вне Sevrice и trasaction
Пожалуйста, предложите решение, заранее спасибо !!