Olá,
Há um relacionamento em questão.
Veja os códigos das classes:
CLASSE ItemBiblioteca:
package br.com.Dominio;
import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
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 javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
@Entity
@Table(name = "ItemBiblioteca", catalog = "dbControleBibliotecario", schema = "dbo")
@Inheritance(strategy= InheritanceType.JOINED)
@XmlRootElement
public class ItemBiblioteca implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "CodItemBiblioteca", nullable = false)
private Integer codItemBiblioteca;
@Basic(optional = false)
@Column(name = "Titulo", nullable = false, length = 150)
private String titulo;
@Basic(optional = false)
@Column(name = "NuReferencia", nullable = false)
private int nuReferencia;
@Basic(optional = false)
@Column(name = "Edicao", nullable = false)
private int edicao;
@Basic(optional = false)
@Column(name = "AnoEdicao", nullable = false)
private int anoEdicao;
@Basic(optional = false)
@Column(name = "NumeroExemplar", nullable = false)
private int numeroExemplar;
@Column(name = "Observacao", length = 255)
private String observacao;
@Basic(optional = false)
@Column(name = "DataCadastro", nullable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date dataCadastro;
@ManyToMany(mappedBy = "itemBibliotecaCollection")
private Collection<Autor> autorCollection;
@JoinColumn(name = "CodSecao", referencedColumnName = "CodSecao", nullable = false)
@ManyToOne(optional = false)
private Secao codSecao;
@JoinColumn(name = "CodEditora", referencedColumnName = "CodEditora", nullable = false)
@ManyToOne(optional = false)
private Editora codEditora;
public ItemBiblioteca() {
}
public ItemBiblioteca(Integer codItemBiblioteca) {
this.codItemBiblioteca = codItemBiblioteca;
}
public ItemBiblioteca(Integer codItemBiblioteca, String titulo, int nuReferencia, int edicao, int anoEdicao, int numeroExemplar, Date dataCadastro) {
this.codItemBiblioteca = codItemBiblioteca;
this.titulo = titulo;
this.nuReferencia = nuReferencia;
this.edicao = edicao;
this.anoEdicao = anoEdicao;
this.numeroExemplar = numeroExemplar;
this.dataCadastro = dataCadastro;
}
public Integer getCodItemBiblioteca() {
return codItemBiblioteca;
}
public void setCodItemBiblioteca(Integer codItemBiblioteca) {
this.codItemBiblioteca = codItemBiblioteca;
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public int getNuReferencia() {
return nuReferencia;
}
public void setNuReferencia(int nuReferencia) {
this.nuReferencia = nuReferencia;
}
public int getEdicao() {
return edicao;
}
public void setEdicao(int edicao) {
this.edicao = edicao;
}
public int getAnoEdicao() {
return anoEdicao;
}
public void setAnoEdicao(int anoEdicao) {
this.anoEdicao = anoEdicao;
}
public int getNumeroExemplar() {
return numeroExemplar;
}
public void setNumeroExemplar(int numeroExemplar) {
this.numeroExemplar = numeroExemplar;
}
public String getObservacao() {
return observacao;
}
public void setObservacao(String observacao) {
this.observacao = observacao;
}
public Date getDataCadastro() {
return dataCadastro;
}
public void setDataCadastro(Date dataCadastro) {
this.dataCadastro = dataCadastro;
}
@XmlTransient
public Collection<Autor> getAutorCollection() {
return autorCollection;
}
public void setAutorCollection(Collection<Autor> autorCollection) {
this.autorCollection = autorCollection;
}
public Secao getCodSecao() {
return codSecao;
}
public void setCodSecao(Secao codSecao) {
this.codSecao = codSecao;
}
public Editora getCodEditora() {
return codEditora;
}
public void setCodEditora(Editora codEditora) {
this.codEditora = codEditora;
}
@Override
public int hashCode() {
int hash = 0;
hash += (codItemBiblioteca != null ? codItemBiblioteca.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof ItemBiblioteca)) {
return false;
}
ItemBiblioteca other = (ItemBiblioteca) object;
if ((this.codItemBiblioteca == null && other.codItemBiblioteca != null) || (this.codItemBiblioteca != null && !this.codItemBiblioteca.equals(other.codItemBiblioteca))) {
return false;
}
return true;
}
@Override
public String toString() {
return "br.com.Dominio.ItemBiblioteca[ codItemBiblioteca=" + codItemBiblioteca + " ]";
}
}
CLASSE Livro:
package br.com.Dominio;
import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
@Entity
@PrimaryKeyJoinColumn(name="CodLivro")
@Table(name = "Livro", catalog = "dbControleBibliotecario", schema = "dbo")
public class Livro extends ItemBiblioteca implements Serializable {
private static final long serialVersionUID = 1L;
@Basic(optional = false)
@Column(name = "Volume", nullable = false)
private int volume;
@Basic(optional = false)
@Column(name = "ISBN", nullable = false)
private int isbn;
public Livro() {
}
public int getVolume() {
return volume;
}
public void setVolume(int volume) {
this.volume = volume;
}
public int getIsbn() {
return isbn;
}
public void setIsbn(int isbn) {
this.isbn = isbn;
}
@Override
public String toString() {
return "br.com.Dominio.Livro[ codLivro=" + getCodItemBiblioteca() + " ]";
}
}
CLASSE Secao:
package br.com.Dominio;
import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlTransient;
@Entity
@Table(name = "Secao", catalog = "dbControleBibliotecario", schema = "dbo")
public class Secao implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "CodSecao", nullable = false)
private Integer codSecao;
@Basic(optional = false)
@Column(name = "NomeSecao", nullable = false, length = 100)
private String nomeSecao;
@Basic(optional = false)
@Column(name = "DataCadastro", nullable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date dataCadastro;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "codSecao")
private Collection<ItemBiblioteca> itemBibliotecaCollection;
public Secao() {
}
public Secao(Integer codSecao) {
this.codSecao = codSecao;
}
public Secao(Integer codSecao, String nomeSecao, Date dataCadastro) {
this.codSecao = codSecao;
this.nomeSecao = nomeSecao;
this.dataCadastro = dataCadastro;
}
public Integer getCodSecao() {
return codSecao;
}
public void setCodSecao(Integer codSecao) {
this.codSecao = codSecao;
}
public String getNomeSecao() {
return nomeSecao;
}
public void setNomeSecao(String nomeSecao) {
this.nomeSecao = nomeSecao;
}
public Date getDataCadastro() {
return dataCadastro;
}
public void setDataCadastro(Date dataCadastro) {
this.dataCadastro = dataCadastro;
}
@XmlTransient
public Collection<ItemBiblioteca> getItemBibliotecaCollection() {
return itemBibliotecaCollection;
}
public void setItemBibliotecaCollection(Collection<ItemBiblioteca> itemBibliotecaCollection) {
this.itemBibliotecaCollection = itemBibliotecaCollection;
}
@Override
public int hashCode() {
int hash = 0;
hash += (codSecao != null ? codSecao.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Secao)) {
return false;
}
Secao other = (Secao) object;
if ((this.codSecao == null && other.codSecao != null) || (this.codSecao != null && !this.codSecao.equals(other.codSecao))) {
return false;
}
return true;
}
@Override
public String toString() {
return "br.com.Dominio.Secao[ codSecao=" + codSecao + " ]";
}
}
CLASSE Editora:
package br.com.Dominio;
import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlTransient;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
@Entity
@Table(name = "Editora", catalog = "dbControleBibliotecario", schema = "dbo")
public class Editora implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "CodEditora", nullable = false)
private Integer codEditora;
@Basic(optional = false)
@Column(name = "NomeEditora", nullable = false, length = 255)
private String nomeEditora;
@Basic(optional = false)
@Column(name = "Logradouro", nullable = false, length = 255)
private String logradouro;
@Basic(optional = false)
@Column(name = "Bairro", nullable = false, length = 45)
private String bairro;
@Basic(optional = false)
@Column(name = "Cidade", nullable = false, length = 45)
private String cidade;
@Basic(optional = false)
@Column(name = "Cep", nullable = false)
private int cep;
@Basic(optional = false)
@Column(name = "UF", nullable = false, length = 2)
private String uf;
@Column(name = "Telefone", length = 13)
private String telefone;
@Column(name = "Email", length = 45)
private String email;
@Column(name = "Fax", length = 15)
private String fax;
@Column(name = "LinkSite", length = 45)
private String linkSite;
@Basic(optional = false)
@Column(name = "DataCadastro", nullable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date dataCadastro;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "codEditora", fetch= FetchType.EAGER)
@Fetch(FetchMode.JOIN)
private Collection<ItemBiblioteca> itemBibliotecaCollection;
public Editora() {
}
public Editora(Integer codEditora) {
this.codEditora = codEditora;
}
public Editora(Integer codEditora, String nomeEditora, String logradouro, String bairro, String cidade, int cep, String uf, Date dataCadastro) {
this.codEditora = codEditora;
this.nomeEditora = nomeEditora;
this.logradouro = logradouro;
this.bairro = bairro;
this.cidade = cidade;
this.cep = cep;
this.uf = uf;
this.dataCadastro = dataCadastro;
}
public Integer getCodEditora() {
return codEditora;
}
public void setCodEditora(Integer codEditora) {
this.codEditora = codEditora;
}
public String getNomeEditora() {
return nomeEditora;
}
public void setNomeEditora(String nomeEditora) {
this.nomeEditora = nomeEditora;
}
public String getLogradouro() {
return logradouro;
}
public void setLogradouro(String logradouro) {
this.logradouro = logradouro;
}
public String getBairro() {
return bairro;
}
public void setBairro(String bairro) {
this.bairro = bairro;
}
public String getCidade() {
return cidade;
}
public void setCidade(String cidade) {
this.cidade = cidade;
}
public int getCep() {
return cep;
}
public void setCep(int cep) {
this.cep = cep;
}
public String getUf() {
return uf;
}
public void setUf(String uf) {
this.uf = uf;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getFax() {
return fax;
}
public void setFax(String fax) {
this.fax = fax;
}
public String getLinkSite() {
return linkSite;
}
public void setLinkSite(String linkSite) {
this.linkSite = linkSite;
}
public Date getDataCadastro() {
return dataCadastro;
}
public void setDataCadastro(Date dataCadastro) {
this.dataCadastro = dataCadastro;
}
@XmlTransient
public Collection<ItemBiblioteca> getItemBibliotecaCollection() {
return itemBibliotecaCollection;
}
public void setItemBibliotecaCollection(Collection<ItemBiblioteca> itemBibliotecaCollection) {
this.itemBibliotecaCollection = itemBibliotecaCollection;
}
@Override
public int hashCode() {
int hash = 0;
hash += (codEditora != null ? codEditora.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Editora)) {
return false;
}
Editora other = (Editora) object;
if ((this.codEditora == null && other.codEditora != null) || (this.codEditora != null && !this.codEditora.equals(other.codEditora))) {
return false;
}
return true;
}
@Override
public String toString() {
return "br.com.Dominio.Editora[ codEditora=" + codEditora + " ]";
}
}
Utilizo o hibernate para criar a aplicação.
Não entendo por que classe Livro não pega o Sets e Gets das classes associadas na super classe ItemBiblioteca.