如何在休眠条件中添加非重复

2022-09-01 15:05:11

在我的数据库中,我有一个测试表,其中包含列:testName,testType,有2个具有相同类型(即“SUN”)的不同测试,因此我只想要其中一个,我在休眠/标准中使用了Dimpent,如下所示,但它仍然为我提供了与“sun”同名的两种类型。

        Criteria crit = session.createCriteria(Test.class);

    final ResultTransformer trans = new DistinctRootEntityResultTransformer();
    crit.setResultTransformer(trans);
    List rsList = trans.transformList(crit.list());

任何可能是什么原因的想法,或任何其他过滤重复项的方法。


答案 1

使用投影。

Criteria crit = session.createCriteria(Test.class).setProjection(
    Projections.distinct(Projections.projectionList()
    .add(Projections.property("type"), "type") )
.setResultTransformer(Transformers.aliasToBean(YourBean.class)); 

List lst = crit.list();

其中,YourBean.class具有属性“type”。返回的列表将为 。List<YourBean>


答案 2

尝试使用 :

cr.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

它非常适合我


推荐