fetch =" join"给出重复的结果

时间:2014-10-29 08:37:51

标签: hibernate

我有一个Address类类型,它有一个Employees集合(在那里工作)。

从类类型到地址的Hibernate的映射包含:

<set
    name="employees"
    inverse="true"
    lazy="true"
    fetch="join"
>

此外,还有5个地址实例,每个地址有5个员工在工作。

在应用程序中,

org.hibernate.Criteria criteria=session.createCriteria(Address.class);
criteria.add(Restrictions.like("zipcode", "%Work"));
List<Address>addresses=criteria.list();

现在地址是25个地址的列表(每个地址有5个员工&#39;),每个地址重复5次。为什么是这样?这是我的问题。

如果在地址的hibernate映射中,

<set
    name="employees"
    inverse="true"
    lazy="false"
    fetch="select"
>

然后就可以了,地址有5个条目,每个条目都有5个员工的集合。

1 个答案:

答案 0 :(得分:1)

尝试将DISTINCT添加到您的查询中:criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

Join fetch将JOIN语句添加到查询,其中fetch类型select使用其他SELECT来检索关系数据,请参阅:http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#performance-fetching