繁体   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