У меня есть вопрос, я добавляю пример с целью объяснения:
У меня есть таблица с именем "A" с атрибутами:
- id
- typeA (дискриминация по столбцам )
- id_entity_link
Я хочу выполнить следующие инструкции SQL:
>>> Jointure on table X with attribute id_entity_link of table A only if attribute typeA is equals to A1 :
select * from A a
inner join X x on a.id_entity_link = x.id and a.typeA='A1'
>>> Jointure on table Y with attribute id_entity_link of table A only if attribute typeA is equals to A2 :
select * from A a
inner join Y y on a.id_entity_link = y.id and a.typeA='A2'
На самом деле, у меня есть этореализация:
@Entity(name = "A")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(
discriminatorType = DiscriminatorType.STRING, name = "typeA")
@Table(name = "A")
public abstract class A {
@Column(name = "id")
@Id
@GeneratedValue
private int identifier;
private int id_entity_link;
}
@DiscriminatorValue("A1")
public class A1 extends A {
// The jointure on table X via id_entity_link must be done only if typeA = "A1"
@JoinColumn(name="id_entity_link", referencedColumnName="id"))
private X x;
}
Как указать, что объединение между таблицами A и X доступно , только если атрибут "typeA" равен A1 ?
@DiscriminatorValue("A2")
public class A2 extends A {
// The jointure on table Y via id_entity_link must be done only if typeA = "A2"
@JoinColumn(name="id_entity_link", referencedColumnName="id"))
private Y y;
}
Как я могу указать, что соединение между таблицами A и Y доступно , только если атрибут "typeA" равен A2 ?
@DiscriminatorValue("A3")
public class A3 extends A {
// No jointure on any table
}
Этот класс не имеетприсоединиться к другому классу.
Спасибо за ваш ответ