DetachedCriteria中的结果错误

时间:2016-10-23 11:48:51

标签: java hibernate detachedcriteria

我有一些实体如下

@Entity
public class Contact {
    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "contact")
    private Set<ContactDetails> details = new HashSet<>();
}

@Entity
public class ContactDetails {
    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, optional = false)
    private Contact contact;

    @ElementCollection(fetch = FetchType.EAGER)
    @CollectionTable(name = "contact_details_values", joinColumn = @JoinColumn(name = "contact_detail_id"))
    @Column(name = "value")
    private Set<String> values = new HashSet<String>();
}

我有一个方法可以选择具有DetachedCriteria的联系人范围,如下所示:

public List<Contact> getContactsByRange(int start, int length) {
    DetachedCriteria criteria = DetachedCriteria.forClass(Contact.class);
    criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
    Criteria executableCriteria = criteria.getExecutableCriteria(currentSession);
    executableCriteria.setFirstResult(start);
    executableCriteria.setMaxResults(length);
    return executableCriteria.list();
}

问题是,当我用0和10调用方法时,它将返回数据库中的所有联系人,但是当我用0和1调用它时,它将返回数据库中的第一个联系人及其第一个详细信息值,如果我调用它1和1它将返回数据库中的第一个联系人及其第二个详细信息值。

1 个答案:

答案 0 :(得分:0)

最后我找到了答案。我在我的方法中使用以下代码:

criteria.setFetchMode("details", FetchMode.SELECT);