Hibernate OneToOne到具有OneToMany的实体

时间:2016-07-21 11:48:01

标签: hibernate lazy-loading one-to-many one-to-one

我有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,虽然我没有明确要求地址或电话......

2 个答案:

答案 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来设置这些集合而不需要获取所有东西。大调减少了选择和带宽。