Как отобразить расчетные свойства с JPA и Быть в спящем режиме

Мой боб Java имеет childCount свойство. Это свойство не отображается на столбце базы данных. Вместо этого это должно быть вычислено базой данных с a COUNT() функция, воздействующая на соединение моего боба Java и его детей. Было бы еще лучше, если это свойство могло бы быть вычислено по требованию / "лениво", но это не обязательно.

В худшем варианте развития событий я могу установить свойство этого боба с HQL или Критериями API, но я предпочел бы не.

Быть в спящем режиме @Formula аннотация может помочь, но я мог едва найти любую документацию.

Любая справка значительно ценится.Спасибо.

98
задан Vlad Mihalcea 14 January 2019 в 10:21
поделиться

1 ответ

JPA не предлагает никакой поддержки производных свойств, поэтому вам придется использовать расширение, специфичное для провайдера. Как вы упомянули, @Formula идеально подходит для этого при использовании Hibernate. Вы можете использовать фрагмент SQL:

@Formula("PRICE*1.155")
private float finalPrice;

Или даже сложные запросы к другим таблицам:

@Formula("(select min(o.creation_date) from Orders o where o.customer_id = id)")
private Date firstOrderDate;

Where id is the id of the current entity.

Стоит прочитать следующую статью в блоге: Производные свойства Hibernate - производительность и переносимость.

Без более подробной информации я не могу дать более точный ответ, но приведенная выше ссылка должна быть полезной.

См. также:

153
ответ дан 24 November 2019 в 05:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: