2010-08-18 3 views
2

У меня есть объект бизнес-объекта, который рассчитывается. Расчет включает некоторые зарегистрированные данные пользователя и поэтому не может быть представлен как простой SQL-запрос.Остановка Hibernate из попыток получить вычисленное поле из базы данных

У меня возникли проблемы с представлением поля в XML-файле сопоставления Hibernate, потому что Hibernate продолжает пытаться извлекать поле из базы данных, хотя в этом столбце нет столбца.

ответ

1

У меня возникли проблемы с представлением поля в XML-файле сопоставления Hibernate, поскольку Hibernate продолжает пытаться извлекать поле из базы данных, хотя по этому имени нет столбца.

У меня, вероятно, отсутствует что-то очевидное, но ... почему вы тогда сопоставляете это поле? Но на всякий случай это может быть хорошим вариантом использования для атрибута <formula>.


Поле находится в классе Java, и когда я код запроса я могу предоставить пользовательский SQL, чтобы заполнить его, например:. ВЫБРАТЬ т *, (SELECT х FROM у) поле из таблицы t WHERE ... Hibernate позволяет мне затем использовать SQLQuery.addEntity (Z.class) и соответствующим образом создавать объект. Насколько я понимаю, если я полностью покину поле из сопоставления, я никогда не смогу заполнить этот атрибут по моему запросу. Я пробовал :)

Я подозревал что-то вроде этого, но я хотел получить подтверждение. Я не думаю, что у вас есть много вариантов здесь: либо используйте <formula> (будь то «глупая» формула, чтобы обмануть спящий режим), либо return a non managed entity.

+0

Поля находится в классе Java, и когда я код запроса я могу предоставить пользовательский SQL, чтобы заполнить его, например: SELECT t. *, (SELECT x FROM y) AS field FROM table t WHERE ... Hibernate позволяет мне использовать SQLQuery.addEntity (Z.class) и создает объект соответствующим образом. Насколько я понимаю, если я полностью покину поле из сопоставления, я никогда не смогу заполнить этот атрибут по моему запросу. Я пробовал :) – Fry

+0

Итак, я попробовал иметь и немую формулу, и сложный комплексный запрос, и я получаю следующий NPE: http://pastebin.com/1euDAGeM ​​ Что это за ошибка здесь: http: // stackoverflow .com/questions/3331529/native-sql-query-for-a-hibernate-entity-using-formula-results-in-nullpointerexc – Fry

+0

@Fry: Argh! Похоже, что «трюк» не будет работать, по крайней мере, сейчас ... –

0

Это звучит, как вы хотите, это свойство быть «переходным»

<transient name="foo" /> 
+0

Это не элемент 'hbm.xml' (AFAIK, любое не отображаемое свойство является« переходным »по определению, так как Hibernate не будет знать об этом). –

Смежные вопросы