我有2个实体。 实体nr.1包含一些字段和一些集合,映射一个到多个LAZY,而实体nr.2与此一个具有OneToOne关系。
当我想要检索实体nr.2时,实体nr中的所有onetomany。即使它们是LAZY,也会检索到1。 我不是在谈论一个方法,只是检索一个实体nr.2和实体nr.1而没有它的集合。
谢谢
代码示例:
这是实体nr。 2,其中包含一个指定的实体nr.2的OneToOne rel:
@OneToOne
@JoinColumn(name="id_employee")
public Employee getEmployee() {
return employee;
}
public void setEmployee(Employee employee) {
this.employee = employee;
}
这是实体nr.1,它有很多这样的集合:
@OneToMany(cascade = CascadeType.ALL, mappedBy="employee", orphanRemoval = true)
@JsonManagedReference
@XmlElement
public Set<Phone> getPhone() {
return phone;
}
public void setPhone(Set<Phone> phone) {
this.phone = phone;
}
Ant Employee有很多集合,包括地址等,我不想显示它们。 当我返回实体nr。 2,它向我展示了Employee的所有rels,我不需要它。它也给了我着名的LazyInitexcepetion,虽然我没有明确要求地址或电话......
答案 0 :(得分:0)
@OneToOne(fetch=FetchType.LAZY)
@JoinColumn(name="id_employee")
public Employee getEmployee() {
return employee;
}
从JPA 2.0规范中,默认值如下:
OneToMany: LAZY
ManyToOne: EAGER
ManyToMany: LAZY
OneToOne: EAGER
答案 1 :(得分:0)
我在此期间使用自定义查询解决了这个问题。所以我只得到了OneToOne所需要的东西,然后我使用主要实体的setter来设置这些集合而不需要获取所有东西。大调减少了选择和带宽。