Мы пытаемся перейти на аннотации Hibernate из файлов .hbm.xml.
Я ищу аннотационный эквивалент следующего XML:
<set name = "someSet">
<subselect>
<![CDATA[some long SQL query]]>
</subselect>
<key column = "fk" />
<element type = "MyUserType" column = "value" />
</set>
Я знаю, что есть @Subselect, но не знаю, как использовать его для моей проблемы.
Я нашел этот вопрос, но, насколько я понимаю, я хочу определять View не для всей сущности, а только для этого одного поля.
Объявление его на MyUserType не приводит к достижению моей цели, поскольку это применимо везде, где используется MyUserType. Мне нужно создать подкласс MyUserType, или есть лучший способ?
@XtremeBaumer Я добавил дополнительную информацию к своему вопросу. Я искал какое-то время безрезультатно.
вы не можете добавить @Subselect в определенное поле. Он используется для всего объекта. Лучшее, что вы можете сделать, если вам действительно нужен подвыбор для этого поля, - это создать View, а затем сопоставить это поле с представлением с помощью @ElementCollection и @CollectionTable.
При чем здесь JPA? поскольку вам явно нужна «аннотация Hibernate» и цитируется только Hibernate HBM XML
@ DN1 Мысль заключалась в том, что может быть решение только для JPA-спецификации, но я удалил тег.




@OneToMany(mappedBy = "department", fetch = FetchType.LAZY)
@Fetch(FetchMode.SUBSELECT)
private List<Employee> employees = new ArrayList<>();
Вопрос не в этом.
Чтобы решить эту проблему, мы решили использовать представления базы данных.
К сожалению, он отделяет запрос от кода, но это метод с наименьшими шансами случайно что-то сломать.
Насколько я могу судить, прямой аннотации @Subselect для замены этой конструкции hbm не существует.
почему бы тогда не погуглить?