有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java错误导致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) 个答案

  1. # 1 楼答案

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

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