Spring JPA FetchType.LAZY集合是在JSON序列化期间获取的
oneToMany带注释的集合是在对相应控制器端点的rest调用期间获取的。集合是一个延迟获取列表 如何避免提取该集合? 这是一个典型的大型集合,除非明确请求,否则不应连接 提前谢谢Spring JPA FetchType.LAZY集合是在JSON序列化期间获取的,spring,rest,jpa,spring-boot,Spring,Rest,Jpa,Spring Boot,oneToMany带注释的集合是在对相应控制器端点的rest调用期间获取的。集合是一个延迟获取列表 如何避免提取该集合? 这是一个典型的大型集合,除非明确请求,否则不应连接 提前谢谢 package xxx; import java.math.BigDecimal; import java.util.Calendar; import java.util.List; @Entity(name = "Ortaklik")
package xxx;
import java.math.BigDecimal;
import java.util.Calendar;
import java.util.List;
@Entity(name = "Ortaklik")
// @Table(name="ortaklik",uniqueConstraints={@UniqueConstraint(columnNames={"id"})})
@NamedQueries({
@NamedQuery(name = "Ortaklik.findMaxOrtaklik", query = "SELECT o FROM Ortaklik o WHERE o.id=(SELECT MAX(o.id) FROM o WHERE o.ortak.id=:ortakid )") })
@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class,property="@ortaklikId")
public class OrtaklikEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "seq_Ortaklik")
@SequenceGenerator(sequenceName = "seq_Ortaklik", name = "seq_Ortaklik")
private Long id;
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "ortak_id")
@JsonBackReference
private OrtakEntity ortak;
/**********************THIS IS THE MENTIONED COLLECTION****///////
@OneToMany(mappedBy="ortaklik",fetch=FetchType.LAZY)
private List<OngorulenAidatOdemePlanTaksitEntity> aidatList;
public OrtaklikEntity() {
}
public List<OngorulenAidatOdemePlanTaksitEntity> getAidatList() {
return aidatList;
}
public void setAidatList(List<OngorulenAidatOdemePlanTaksitEntity> aidatList) {
this.aidatList = aidatList;
}
}
The inverse side of the relationship is as follows
public class OngorulenAidatOdemePlanTaksitEntity implements Serializable, Comparable {
// <editor-fold defaultstate="collapsed" desc="alanlar">
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "seq_ongrln_aidat_oplani_tkst")
@SequenceGenerator(sequenceName = "seq_ongrln_aidat_oplani_tkst", name = "seq_ongrln_aidat_oplani_tkst")
private Long id;
@ManyToOne
@JoinColumn(name="ortaklik_id")
private OrtaklikEntity ortaklik;
我不认为transient会有帮助,因为这些记录已经被持久化了。除非客户机显式请求该集合,否则不应检索它们,而该集合正是延迟获取的目的。如果客户希望列出收藏,他们应该与客户联系。我删除了我的临时建议,因为它确实不好;可能会更好吗?由于序列化,它被显式调用。所有属性是默认情况下序列化所有属性。如果您不希望这样做,请创建DTO,或将@JsonIgnore放在字段上,或使用@JsonView指定要公开的内容。为什么在序列化实体时事务未关闭?确保你的交易结束,一切都会好起来。德尼姆的回答帮了我的忙。首先,我在application.properties中禁用了opensessioninview筛选器,然后我JsonIgnored了子集合。如果您发布回复,我想将其标记为正确答案