Расчет спящего гиберната @Formula

возможно ли иметь и Entity с полем, вычисленным по Formula когда поле является Collection (скажем, это Set )?

Вот фиктивный пример того, что я пытаюсь достичь:

 @Formula(value = "SELECT NEW com.example.entity.Person(p.name, p.age) FROM Person p") lateinit var people :Set<Person> 

Из JavaDoc для @Formula :

Определяет формулу (производное значение), которая является фрагментом SQL

Вы должны думать о фрагменте, который вы пишете в качестве замены в заявлении select:

 SELECT (formulaValue) AS propertyName FROM .... 

Все, что вы можете написать в formulaValue можно использовать в @Formula .

Ваш пример не является допустимым фрагментом SQL, и, как вы можете видеть, невозможно вернуть более одного значения из @Formula .

Но вместо этого вы можете использовать @Subselect и объект-оболочку:

 @Entity @Subselect("SELECT name, age FROM Person p") public class PersonWrapper { @Id private String name; private int age; } 

(в Java, поскольку я не знаю правильного синтаксиса Котлина)

Если вам действительно нужна коллекция этих значений в другом объекте, вам нужно что-то присоединиться (что отсутствует в вашем примере) и использовать это в @OneToMany или @ManyToMany . В противном случае нет смысла использовать все эти значения в вашей сущности, поскольку все объекты будут иметь одну и ту же коллекцию.

Intereting Posts
Recruit-MP LightCalendarView – ошибка раздувания класса, noSuchMethodException Eclipse Aether не разрешает `LATEST` правильно Могу ли я вызвать плагин Kotlin noargs из командной строки или из Ant? Идиоматические редакторы Kotlin Как читать текстовый файл из ресурсов в Котлин? Неожиданные жетоны (используйте, чтобы разделить выражения в одной строке) в котлин Можно ли смешивать Scala и Kotlin в одном модуле maven? Ошибка при создании объекта реализует интерфейс: класс не имеет конструктора Область применения верхнего уровня Kotlin Использование в операторе для сравнения строки с диапазоном строк Как создать экземпляр объекта с использованием значений параметров конструктора по умолчанию в Kotlin? Kotlin загружает внешний класс? В библиотеке Injekt для Kotlin, как мне вводить функции вместо значений? «Недостаточно информации для вывода параметра T» с помощью Kotlin и Android Hibernate сохраняет дочерний объект с нулевым родительским идентификатором