|
|
|
Hibernate Criteria API: Как сгенерить запрос select count(distinct(id)) from...
|
|||
|---|---|---|---|
|
#18+
select count(distinct(t.id)) from t inner join t1 on t.id=t1.t_id Есть две таблички: t:id t1:id,t_id И два класса: T{Integer id; Set t1s;} T1{ Integer id;Integer t_id} List l = session.createCriteria(T.class).createAlias("t1s").add(Restrictions.eq("id", new Integer(1)).list(); объекты T в списке дублируются. List l = session.createCriteria(T.class).createAlias("t1s").add(Restrictions.eq("id", new Integer(1)).setProjection(Projections.rowCount()).list(); Поэтому запись выше выдает число объектов, учитывая дубли. Мне надо, чтобы дубли не учитывались, а именно был такого вида запрос: select count(distinct(t.id)) from... Как это сделать? ResultTransformer трансформирует List, и дубли исчезают, но проблему это не решает. Мне заранее надо знать - сколько результатов вернет поисковый запрос. Пробовал SQLProjection - так и не понял, как оно работает. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. Такого вида тест дает в логе: ibernate: select count(distinct(this_.id)) from test this_ 16:07:26,921 WARN JDBCExceptionReporter:71 - SQL Error: 0, SQLState: S0022 16:07:26,921 ERROR JDBCExceptionReporter:72 - Column 'this_.id' not found. и соответствующий Exception ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 13:38:20 |
|
||
|
Hibernate Criteria API: Как сгенерить запрос select count(distinct(id)) from...
|
|||
|---|---|---|---|
|
#18+
что то жёстко как-то. думаю проблема не существенна в хибернэйтских факах есть соотв вопрос от туда я поднял примерно вот это Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 13:56:51 |
|
||
|
Hibernate Criteria API: Как сгенерить запрос select count(distinct(id)) from...
|
|||
|---|---|---|---|
|
#18+
privet Alexey Turn, sqlProjection - rabotaet primerno vot tak: Na primer: String sql = "convert(datetime, convert(char(10), {alias}.EntryDate, 104)) as EntryDate"; Criteria criteria = hs.createCriteria(Bestelleingang.class) .setProjection( Projections.distinct( Projections.sqlProjection(sql, new String[]{"EntryDate"}, new Type[]{Hibernate.DATE}))) ) "hs" - HibernateSession. Vajniy moment sdes et "as ...." tak kak Column - eto to 4to stoit pesle "as", naprimer "EntryDate" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2007, 16:51:34 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=664&tid=2146774]: |
0ms |
get settings: |
18ms |
get forum list: |
24ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
44ms |
get topic data: |
17ms |
get forum data: |
5ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
| others: | 289ms |
| total: | 484ms |

| 0 / 0 |
