簡體   English   中英

混合的投影

[英]hiebrnate projection with distinct

我試圖在表“ Test”的列“ testType”上獲得唯一性。 我也想在列表中同時獲取“ testType”和“ testId”。 為此,我正在這樣做,但是沒有應用distinct,給了我重復的結果。

知道我該如何解決嗎?

Session session = sessionFactory.openSession();
Criteria crit = session.createCriteria(Test.class);
ProjectionList proList = Projections.projectionList();
proList.add(Projections.property("testType"));
proList.add(Projections.property("testId"));
crit.setProjection(proList);
crit.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
List rsList = crit.list();

提前致謝。

獲得testType的不同值

Session session = sessionFactory.openSession();
List results = session.createCriteria(Test.class);
    .setProjection(Projections.distinct(Projections.property("testType")))
    .list();

但是要獲取ID,您也不能選擇它,因為每種類型可能有很多ID,例如:

testId | testType
-----------------
1      | type1
2      | type2
3      | type1
4      | type2
6      | type3
7      | type3

Select Distinct(testType), testid返回什么?

  1. (type1,1),(type2,2),(type3,6)
  2. (type1、3),(type2、4),(type3、7)
  3. (type1,1),(type2,4),(type3,6)

1)

Session session = sessionFactory.openSession();
List results = session.createCriteria(Test.class);
    .setProjection(Projections.projectionList()
        .add(Projections.group(Projections.property("testType"))))
        .add(Projections.Min(Projections.property("testid")))))
    .list();

2)

Session session = sessionFactory.openSession();
List results = session.createCriteria(Test.class);
    .setProjection(Projections.projectionList()
        .add(Projections.group(Projections.property("testType"))))
        .add(Projections.Max(Projections.property("testid")))))
    .list();

暫無
暫無

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

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