Остановка Hibernate от попытки получить вычисляемое поле из базы данных - PullRequest
2 голосов
/ 18 августа 2010

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

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

Ответы [ 2 ]

1 голос
/ 18 августа 2010

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

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


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

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

0 голосов
/ 18 августа 2010

Похоже, вы хотите, чтобы это свойство было «временным»

<transient name="foo" />
...