Estou recebendo o seguinte erro por causa de algo que acredito ser na annotation do hibernate para herança.
Abaixo o código:
package biblioteca;
import java.util.Collection;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorType;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinTable;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
@Entity
@Table(name="tb_livro")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="TYPE", discriminatorType=DiscriminatorType.STRING)
public class Livro {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id_livro", unique=true)
private int id;
@Column(length=30)
private String titulo;
@Temporal(TemporalType.DATE)
private Date ano;
@Embedded
private Endereco endereco;
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name="Livro_Autor",
joinColumns= {@JoinColumn(name="id_livro")},
inverseJoinColumns= {@JoinColumn(name="id_autor")})
private Collection<Autor> autores;
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="id_livro", insertable=true, updatable=true)
@Fetch(FetchMode.JOIN)
@Cascade(CascadeType.SAVE_UPDATE)
private Editora editora;
public Endereco getEndereco() {
return endereco;
}
public void setEndereco(Endereco endereco) {
this.endereco = endereco;
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public Date getAno() {
return ano;
}
public void setAno(Date ano) {
this.ano = ano;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Editora getEditora() {
return editora;
}
public void setEditora(Editora editora) {
this.editora = editora;
}
public Collection<Autor> getAutores() {
return autores;
}
public void setAutores(Collection<Autor> autores) {
this.autores = autores;
}
}
Classe que herda:
package biblioteca;
import javax.persistence.Column;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
@DiscriminatorValue("LiImp")
public class LivroImportado extends Livro {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(length=30)
private String tradutor;
@Column(length=15)
private String impressao;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTradutor() {
return tradutor;
}
public void setTradutor(String tradutor) {
this.tradutor = tradutor;
}
public String getImpressao() {
return impressao;
}
public void setImpressao(String impressao) {
this.impressao = impressao;
}
}
Alguém saberia onde está o erro?
Tentei fazer com @Inheritance(strategy=InheritanceType.JOINED), mas da o mesmo erro.
Desde já agradeço.