Boa noite senhores,
estou procurando a algum tempo e não achei nada. :cry:
Tenho uma classe que possui uma chave composta e um relacionamento dessa classe com outra (Many To One).
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "TABLE_A")
public abstract class ClasseA {
@EmbeddedId
private ClasseAKey key;
...
@Embeddable
public static class ClasseAKey implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name = "COLUMN_A")
private String colunaA;
@ManyToOne
@JoinColumn(name = "COLUMN_B")
private ObjB objB;
//...
}
}
Essa seria uma das classes que implementa A
@Entity
@PrimaryKeyJoinColumns({@PrimaryKeyJoinColumn(name = "COLUMN_A", referencedColumnName="COLUMN_A"), @PrimaryKeyJoinColumn(name="COLUMN_B", referencedColumnName="COLUMN_B")})
@Table(name = "TABLE_A1")
public class SubClasseA extends ClasseA implements Serializable {
...
}
Se eu fizer um HQL buscando tudo que está cadastrado na tabela A funciona perfeitamente e inclusive traz as outras subclasses.
Mas o problema é que possuo um relacionamento da seguinte forma:
@Entity
@Table(name = "TABLE_B")
public class ClasseB implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE,
generator = "SEQUENCE")
@SequenceGenerator(name = "SEQUENCE",
sequenceName = "SEQUENCE",
allocationSize = SEQUENCE)
@Column(name = "COLUMN_C")
private long id;
@ManyToOne
@JoinColumns({@JoinColumn(name="COLUMN_A", referencedColumnName="COLUMN_A"), @JoinColumn(name="COLUMN_B", referencedColumnName="COLUMN_B")})
private ClasseA classeA;
...
}
Alguém sabe se está certo essa forma de relacionar a classeB com a classe A?
Seria através do JoinColumns mesmo? Ou tem algum outro esquema?
Se esse relacionamento não fosse uma chave composta, funcionaria perfeitamente.
Obrigado pela ajuda.
Abraços