在我的数据库中,我有一个测试表,列:testName,testType有2个不同的测试具有相同的类型,即“SUN”,所以我只想要其中一个,我在我的hibernate / criteria中使用Distinct,如下所示,但它仍然给了我两个与“sun”同名的类型。
Criteria crit = session.createCriteria(Test.class);
final ResultTransformer trans = new DistinctRootEntityResultTransformer();
crit.setResultTransformer(trans);
List rsList = trans.transformList(crit.list());
任何想法可能是什么原因,或任何其他过滤重复的方法。
8条答案
按热度按时间1cosmwyk1#
使用Projections.distinct。
其中YourBean.class有一个属性“type”。返回的列表将是
List<YourBean>
。sg2wtvxw2#
尝试用途:
对我来说效果很好
zd287kbt3#
我终于找到了获取其他列值的方法:
flvtvl504#
尝试用途:
g6baxovj5#
我也遇到了同样的问题,最后使用Group By投影解决了这个问题,然后添加了我需要的所有列。例如
uurv41yg6#
试试
setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
,像这样:sycxhyv77#
投影仅提供标记属性的结果。但是,这给子实体带来了问题。看看我的帖子,看看我面临的真实的问题。
Hibernate: Parent and Child relationship data structure
kzipqqlq8#
尝试使用:
它使用默认哈希码在结果中查找匹配项。
谢谢.