Расчет спящего гиберната @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
Kotlin: Оператор '==' не может применяться к 'kotlin.Int' и 'Person?' ошибка Дженерики: абстрактный класс и тип ребенка JSON для HashMap с объектами с использованием Gson Почему этот тест инструментария Android вызывает активность onCreate дважды? Стили вложенного объекта Realm Переопределение активателя имущества Котлина приводит к двум JPA @Id Glide 4.3.1: как использовать ошибку ()? Как скопировать список Завершенных исполнений с помощью RxJava? Как начать аннотация Обработка (kapt) для локальной библиотеки? Пользовательский вертикальный просмотрщик не работает с прослушивателем onClick в дочернем представлении Генератор последовательности как вызов функции расширения не работает с «несоответствием типа приемника», Настройка установщика интерфейса в классе, реализующего его Загрузка файла с удаленного устройства и сохранение его на устройстве Android Котлин – вторичный конструктор, который отличается одним аргументом Проверьте, нет ли функции в Котлине