Пожалуйста, позвольте мне просто показать код,
@Entity
class R {
@Id
Long id;
String selector;
long fkey;
// other columns...
}
@Entity
class Foo {
@Id
Long id;
// select * from R where selector='A' and fkey=Foo_id
@OneToMany
Set<R> aSet;
// select * from R where selector='B' and fkey=Foo_id
@OneToMany
Set<R> bSet;
}
Здесь я не могу разбить R
на две таблицы: R_A
и R_B
, потому что селектор является вариантом.
Я знаю, что могу создавать представления R_A и R_B, но я не знаю, как позволить Hibernate генерировать DDL для представлений.Или, может быть, я должен указать пользовательский запрос SQL в аннотациях сущностей?Мол,
@Entity
@SourceSQL("select * from R where selector='A')
class R_A { ... }
или, может быть, что-то вроде этого,
@Entity
class Foo {
@Id
Long id;
@OneToMany
@RestrictJoin("selector = 'A'")
Set<R> aSet;
@OneToMany
@RestrictJoin("selector = 'B'")
Set<R> bSet;
}
Ну, спасибо заранее.