Ниже приведена упрощенная версия схемы для описания реальной проблемы.Борьба за описание отношений JPA или Hibernate с помощью аннотаций
Рассмотрите следующие три класса. MetaDataInfo хранит текущие версии о различных таблицах метаданных. Столбец «isCurrent» указывает на текущую версию.
@Entity
class MetaDataInfo
{
@Column
int version;
@Column
String type;
@Column
boolean isCurrent;
}
@Entity
VersionedInfo {
@Column
int version;
}
@Entity
Data {
VersionedInfo info;
}
Можно ли задать спящий режим с помощью аннотаций автоматического обеспечения VersionedInfo из таблицы данных, когда данные считываются из базы данных - как это делает для других отношений. С SQL точки зрения запрос будет выглядеть следующим образом
select * from VersionedInfo where version = (select version from MetaDataInfo where isCurrent = true and type = "VersionedInfo")
Как насчет аннотировать о версиях, а? Также я не понимаю, что вы пытаетесь сделать здесь. Похоже, вы злоупотребляете Hibernate здесь. Для меня это похоже на то, что эти классы MetaData и Version являются общими абстрактными классами. – Vaelyr
Вы можете использовать [Hibernate filters] (http://www.mkyong.com/hibernate/hibernate-data-filter-example-xml-and-annotation/), чтобы достичь этой функциональности, создать фильтр с вашим местом и активировать это перед запросами. (Это не соответствует JPA) –
@Vaelyr - Не понял ваш вопрос. Если вы запрашиваете аннотацию записи Data.info, это мой вопрос. Какую аннотацию я должен использовать здесь. Я хочу перейти к объекту, у которого есть конкретное предложение where и его не прямые отношения, поскольку текущая версия исходит из другой таблицы. – user871199