Допустим, у меня есть этот класс в моем приложении Java, с весенней загрузкой, в спящем режиме:
@Entity
@Table(name="person")
@Getter @Setter @NoArgsConstructor
public class Person{
@Id
@Column(name="ID", nullable=false)
private int Id;
@Column(name="PERSON_ID")
private String personId;
@Column(name="FIRST_NME")
private String firstName;
@Column(name="LAST_NME")
private String lastName;
@OneToMany(fetch=FetchType.LAZY, mappedBy = "person", cascade = {CascadeType.ALL})
private List<Award> awards;
}
и, скажем, это класс наград:
@Entity
@Table(name="award")
@Getter @Setter @NoArgsConstructor
public class Award{
@Id
@Column(name="COMPOSITE_ID", nullable=false)
private int Id;
@Column(name="AWARD_CODE")
private String awardCode;
@Column(name="AWARD_NAME")
private String awardName;
@ManyToOne
@JoinColumn(name="PERSON_ID")
private Personn person;
}
Когда я это сделаюпросто найти все из моего репозитория jpa следующим образом:
List<Person> findAll();
Я получаю эту ошибку:
failed to lazily initialize a collection of role: com.my.proj.datastores.legacy.model.Person.awards, could not initialize proxy - no Session; nested exception is com.fasterxml.jackson.databind.JsonMappingException: failed to lazily initialize a collection of role: com.my.proj.datastores.legacy.model.Person.awards, could not initialize proxy - no Session (through reference chain: com.my.proj.datastores.ngl.model.Person["awards"])]
Не совсем уверен, почему ... Я могу заставить запрос работать, если я делаю@JsonIgnore, но я хочу, чтобы эти наградные дочерние объекты.