Pessoal,
Tenho o seguinte modelo
@Entity
@Table(name = "VINCULAVEL")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
//@MappedSuperclass
public abstract class Vinculavel {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "id", nullable = false)
protected Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
@Entity
@Table(name = "TAB_FILHA_VINCULAVEL")
@AttributeOverride(name = "id", column = @Column(name = "id_filha_vinculavel", nullable = false))
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@SequenceGenerator(name="FILHA_VINCULAVE_SEQ", sequenceName = "id_filha_vinculavel_seq", allocationSize=1)
public class FilhaVinculavel extends CrmVinculavelTarefa {
private static final long serialVersionUID = 1L;
@Column(name = nomelength = 30, nullable = false)
private String nome
}
@Entity
@Table(name = "TAB_QUALQUER")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@SequenceGenerator(name="TAB_QUALQUER_SEQ", sequenceName = "id_tab_qualquer_seq", allocationSize=1)
public class TabQualquer {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "TAB_QUALQUER_SEQ")
@Column(name = "id_tab_qualquer")
private Long id;
@ManyToOne
@JoinColumn(name = "id_vinculavel")
private Vinculavel owner;
}
Percebam que TabQualquer tem um relacionamento com Vinculavel e mais de uma classe pode ser um Vinculavel…e é isso que preciso…
Pois bem, gerando o banco assim, o hibernate cria a tabela TAB_FILHA_VINCULAVEL com Pk = “id” e nao com “id_filha_vinculavel” mesmo eu fazendo o @AttributeOverride e também não cria a sequence “id_filha_vinculavel_seq”, ele cria a “hibernate_sequence”. Se eu deixo a anotacao @MappedSuperClass é criada uma tabela “Vinculavel” somente com o atributo “id” (o que não é desejavel)
Preciso criar uma abstração para que a classe TAB_QUALQUER possa ter vinculada a ela qualquer classe que seja “Vinculavel” mas mantendo a consistencia na hora da criação das tabelas, bem como cada classe que extenda Vinculavel tenha o “seu proprio” id… como no caso de “id_filha_vinculavel” e nao usar o id da super classe.
Alguma sugestão de como fazer isso pessoal?