|
|
|
Hibernate. Projection.
|
|||
|---|---|---|---|
|
#18+
Добрый день! Суть проблемы: Есть две таблицы Product и Contract (one to one). Нужно выполнить запрос в базу Код: plsql 1. Нужны не все поля, поэтому исользую Projection Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Запрос выполняется без ошибок, поля подгружаются, кроме поля "p". Оно всё время null. В запросе который посылает хибернейт в селекте есть все поля кроме поля Продукт. Если я сортирую по полю которое принадлежит таблицы Контракта или не сортирую вообще, то всё возвращает правильно. Кажется мне, что-то здесь не так с джоинами внутри Projection листа. Пробовал след. образом add(Projections.property("p"), "p"). (и другие варианты, такие как "product","p" ; "p","product") - оно пишет, что либо такого поля не существует, либо нет сеттера для данного поля. Заранее благодарю! Если нужна какая-то еще информация буду рад предоставить! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2015, 15:05 |
|
||
|
Hibernate. Projection.
|
|||
|---|---|---|---|
|
#18+
вот этот код, зачем он тут? Код: java 1. 2. при этом поле c.status (из запроса) в проекции пропущено... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2015, 15:36 |
|
||
|
Hibernate. Projection.
|
|||
|---|---|---|---|
|
#18+
Projections.groupProperty(p.index) - hibernate требует чтобы было в GROUP BY Projections.groupProperty("id") - заменяю дистинкт(ниже расскажу почему) Думаю можно оставить, любой из этих. Про дубликаты. Запрос на самом деле выглядет немного сложнее - (таблица Setting связана с полем Product many-to-one) Код: plsql 1. 2. (может быть не совсем корректно описал зависимости, но не сильно важно) В чем суть: так как связь у нас многие к одному, на запрос s.field <> X оно возвращает дублирующие строки. Из 15 строк только например 3 или 4 будут уникальные. Окей, попробуем дописать DISTINCT_ROOT_ENTITY. Теперь оно убирает повторяющиеся строки, но делает это внутри этих 15 штук. То есть на выходе моего запроса я получаю не 15 уникальных значений, а только 3 или 4. всё это сделано, для pagination и полученный результат меня не удовлетворяет. На каждой странице по 3,4 записи вместо 15. поэтому и решил сделать это через GROUP BY(sql запрос в базу работает отлично) и соответсвующие проблемы. Если подскажете, как можно сделать правильный дистинкт - буду очень признателен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2015, 16:22 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38953785&tid=2125447]: |
0ms |
get settings: |
5ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 344ms |

| 0 / 0 |
