Pessoal,
Estou com a seguinte situação: Tenho uma classe abstrata e outras classes concretas que devem fazer o override do atributo, que por sinal é o Id.
Da forma que estou fazendo, estou conseguindo, porém com o inconveniente de ser criado uma tabela com o nome da classe abstrata. Gostaria de saber se tem como eu fazer funcionar sem que a tabela da classe abstrata seja criada. Abaixo segue as classes
@Entity
@Table(name = "NOME_SUPER_CLASSE")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@MappedSuperclass
public abstract class NomeSuperClass {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", nullable = false)
protected Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
@Entity
@Table(name = "NOME_SB_CLASSE")
@AttributeOverride(name = "id", column = @Column(name = "id_sub_class", nullable = false))
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class NomeSubClass extends NomeSuperClass {
private static final long serialVersionUID = 1L;
@Column(name = "contato", length = 30, nullable = false)
private String contato;
@Column(name = "fone_contato", length = 14)
private String fone;
Da forma que está aí, eu consigo gerar a tabela NOME_SB_CLASSE com a coluna pk com nome “id_sub_class” mas tbm é criado no banco uma tabela com o nome de “NOME_SUPER_CLASSE”
Importante: Tenho outra classe que tem um relacionamento com a SUPER_CLASSE, porque eu terei mais de uma subclasse dessa superclasse e essa classe deve se relacionar com qualquer subclasse…por isso essa minha abordagem.
Se alguém souber como resolver isso ou ainda propor uma abordagem diferente para solução do problema agradeço.
Obrigado