簡體   English   中英

Hibernate Criteria查找重復項

[英]Hibernate Criteria to find Duplicates

我想獲得重復的條目。 我想使用查詢作為標准,為此我使用下面的代碼。

SELECT * from A 
WHERE field in (
     SELECT field from A 
     GROUP BY field HAVING COUNT(field) > 1
);

Hibernate映射就像

@Entity
class A{
    ...
    private String field;
    ...
}

如何在“字段”列中獲取具有重復的A列表?

你幾乎可以將你的查詢一對一翻譯成HQL (警告:未經測試)。

select A
from A a 
where a.field in (
   select ai.field 
   from A ai
   group by ai.field -- assumes that by f you mean field 
   having count(a1.field) > 1
)

根據安東尼·阿西奧利的提示,我自己的回答

final Criteria searchCriteria = session.createCriteria(A.class);

...

final DetachedCriteria d1 = DetachedCriteria.forClass(A.class);
d1.setProjection(Projections.count("field"));
d1.add(Restrictions.eqProperty("field", "AA.field"));

final DetachedCriteria d2 = DetachedCriteria.forClass(A.class, "AA");
d2.setProjection(Projections.projectionList()
.add(Projections.groupProperty("field")));
d2.add(Subqueries.lt(1L, d1));

criteria.add(Property.forName("field").in(d2));

暫無
暫無

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

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