以下是映射
在A.class内部
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY,
orphanRemoval = true, mappedBy = "aObj")
private List<B> listB;
在B.class内部
@ManyToOne(fetch = FetchType.LAZY)
@JsonIgnore
@JoinColumn(name = "a_id")
private A aObj;
我有2个实体A和B。实体A包含List作为@OneToMany关系,而B包含对A的引用(双向一对多关系)。插入操作效果很好,但是当我尝试更新记录时。
A a = repository.findById(1);
a.setName("Test Name");
repository.save(a);
这里的问题是,休眠会执行一个额外的全选查询以检索List。
顺序如下
Hibernate: select query for A
Hibernate: select all query for B
Hibernate: update query for A
现在为什么要在这里选择所有与B有关的查询 我已经在两端定义了延迟获取策略。
答案 0 :(得分:0)
您需要使用:
Error in function FlateEncode (https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.debug.js:11745:7): Deflater is not defined
请注意,如果使用级联:
@OneToMany(mappedBy = "{your_var}", fetch = FetchType.LAZY)
private List<B> list;
此属性具有多米诺骨牌效果,如果列表不为空,则尝试保留或更新列表对象,在这种情况下,我认为这不是您的方法,所以请不要使用它