Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Annotation para classe abstrata

Tenho a seguinte classe abstrata:

@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Nota {

    @Column(name="sala")
    private String sala;

    @Column(name="prova")
    private String prova;

    @Column(name="nota")
    private Double nota;

//getters and setters

E a seguinte classe que extende a classe abstrata:

@Entity
@Table(name="nota_cultural")
public class NotaCultural extends Nota {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer codigo;

    @ManyToMany
    @JoinTable(name = "nota_professor", joinColumns = { @JoinColumn(name = "codigo_professor") }, inverseJoinColumns = {
            @JoinColumn(name = "codigo_nota") })
    private List<Cadastro> professor;
//getters and setters

Gostaria de saber qual a annotation para fazer com que os campos da entidade Nota, apareçam na tabela da NotaCultural pelo banco.

3 respostas

Tenta algo assim, retirei as chaves '{}' que não precisavam e deu certo aqui.

    @ManyToMany
    @JoinTable(name = "nota_professor",
            joinColumns = @JoinColumn(name = "codigo_professor"),
            inverseJoinColumns = @JoinColumn(name = "codigo_nota"))
    private List<Cadastro> professor;

Não funcionou.. acho que vou acabar fazendo a classe com atributos repetidos mesmo..

solução!

Boa noite, Anelise! Como vai?

Não desista! Eu cheguei para te tirar das trevas e levá-la para a luz, minha aluna!

O comportamento que vc está obtendo é devido à estratégia que vc utilizou: Joined, definida pela anotação @Inheritance(strategy = InheritanceType.JOINED). Para vc obter o resultado que vc quer, vc pode usar as estratégias Mapped Superclass ou Table per class.

Como existem 4 tipos de estratégias e cada uma delas além das explicações ainda tem a implicação de cada um dos tipos, vou deixar aqui esse link para um artigo em inglês e esse outro link para um artigo em português, caso prefira nossa língua materna! Ambos explicam cada uma das estratégias e suas características além de exemplos com códigos! Mas o que está em inglês é um pouco mais completo. Além disso, também tem esse post do Paulo Silveira, um dos criadores da Caelum/Alura, no blog da Caelum falando um pouco mais sobre o assunto.

Dá uma olhada aí nas referências que eu te passei e se ficar alguma dúvida é só mandar!

Grande abraço e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software