簡體   English   中英

Hibernate中復合主鍵部分的不同標准

[英]Distinct Criteria on part of a composite primary key in Hibernate

我有一個表格報告(類報告),用復合主鍵(類ReportPK)標識

@Embeddable
public class ReportPK implements Serializable {

    @Basic(optional = false)
    @Column(name="num")
    private int num;

    @Basic(optional = false)
    @Column(name="index")
    private String index;

    //Getters, setters, equals and hashCode methods 
}

@Entity
public class Report {

    @EmbeddedId
    private ReportPK id;

    //Other fields, getters .....
}    

這里,報告用數字和索引標識。

我想檢索具有不同數字的報告,這樣如果我在表格中有這些報告:(1,'A'),(1,'B'),(2,'A')我將得到結果(1, 'A')和(2,'A')(不是(1,'B'))。

我使用此代碼,但它返回ReportPK列表而不是Report列表,而且它返回所有報告(例如沒有使用不同的標准)

List <Report> results = getCurrentSession().createCriteria(Report.class)
            .setProjection( Projections.projectionList()
                .add( Projections.distinct(Projections.property("num")) )
            ).list();

如果有人遇到類似問題或對如何做到這一點有所了解,我感謝他的幫助。

那么,你期望實體,但你正在使用預測。

如果你想要破壞valeus然后使用:

getCurrentSession().createCriteria(Report.class)
    .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

如果你想引用實體的嵌入式id,你應該添加id字段名稱作為前綴fe:

Restrictions.gt("id.num", 10);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM