Problema na modelagem classe abstrata

0 respostas
L

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?

Criado 31 de março de 2010
Respostas 0
Participantes 1