|
|
|
Hibernate и Projection
|
|||
|---|---|---|---|
|
#18+
Выбираю с помощью Criteria из БД объекты. Но мне нужны не сами объекты, а только определённый набор их полей(последовательность и количество определяет пользователь в GUI). Для этого применяю projectionList.add(Property.forName("fieldName")) Но есть одна проблема, одно из полей объект :) целиком. И при попытке где-то снаружи вызвать его toString() вылетает LazyInitializationException. С примитивами понятно проблем нету. Пробовал crit.setFetchMode("declarant",FetchMode.JOIN) , не помогает. Есть ли какой-либо вариант кроме перебора всех полей в методе где сессия ещё есть(в сервис методе)? Собственно как это примерно выглядит: Это главный объект Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Это маппинг того объекта с которым проблемы: Код: xml 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. т.к. я не знаю какой именно объект Declarant будет ассоциирован с главным Complaint, то я вижу единственный вариант это вытаскивать сам объект и у него уже вызывать toString() Пока вижу только один выход - это сделать поле declarant lazy="false" при этом всё работает отлично. может есть ещё какие варианты? ----- Если дела идут плохо, есть вероятность, что в ближайшее время они пойдут ещё хуже.(с)Мерфи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2012, 10:47:30 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=299&tid=2132178]: |
0ms |
get settings: |
19ms |
get forum list: |
27ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
52ms |
get topic data: |
19ms |
get forum data: |
5ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
| others: | 366ms |
| total: | 575ms |

| 0 / 0 |
