У меня есть таблица «AnyEntityReference», которая ссылается на другие объекты по двум полям: тип «ссылочный объект» (т.е. «Entity1», «Entity2», ...) и объект «ключ»:Спящий режим: @ManyToOne по пользовательскому запросу
create table AnyEntityReference (
type varchar, /* 'Entity1' or 'Entity2' or 'Entity3' */
key varchar /* if type = 'Entity1' then key to 'Entity1' table etc. */
)
create table Entity1 (
key varchar,
...
)
create table Entity2 (
key varchar,
...
)
create table Entity3 (
key varchar,
...
)
...
Мне нужно увидеть эти поля в ряде деклараций @ManyToOne, как это:
@ManyToOne
@JoinColumn(name = "key", insertable=false, updatable=false)
@NotFound(action = NotFoundAction.IGNORE)
private Entity1 entity1;
@ManyToOne
@JoinColumn(name = "key", insertable=false, updatable=false)
@NotFound(action = NotFoundAction.IGNORE)
private Entity2 entity2;
@ManyToOne
@JoinColumn(name = "key", insertable=false, updatable=false)
@NotFound(action = NotFoundAction.IGNORE)
private Entity3 entity3;
...
Что здесь отсутствует какая-то дополнительный фильтр, который позволяет Hibernate инициализировать только одно поле с совпадающим «типом».
Я думаю, что могу использовать аннотации @Where или @Filter, но я не знаю, как передать поле типа из ссылочного «владельца».
Кроме того, я хотел бы, чтобы это было реализовано таким образом, поэтому эти поля в «AnyEntityReference» могут ссылаться на «mappedBy» в отношениях @OneToMany.
Я не понимаю ваших исправлений. Во-первых, в моем случае «Пользователь» и «Организация» являются просто примерами сущностей. Они не связаны. – Vladimir