Olá pessoal!!
Segue minha classe de persistência do hibernate:import java.io.Serializable;
import javax.persistence.Embeddable;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
/**
*
* @author eliangela
*/
@Entity
public class ConvenioProcedimento implements Serializable {
@Embeddable
public static class Id implements Serializable {
private Long idProcedimento;
private Long idConvenio;
public Id() {
}
public Id(Long idProcedimento, Long idConvenio) {
this.idProcedimento = idProcedimento;
this.idConvenio = idConvenio;
}
@Override
public boolean equals(Object o) {
if (o != null && o instanceof Id) {
Id that = (Id) o;
return this.idProcedimento.equals(that.idProcedimento) &&
this.idConvenio.equals(that.idConvenio);
} else {
return false;
}
}
@Override
public int hashCode() {
return idProcedimento.hashCode() + idConvenio.hashCode();
}
}
private static final long serialVersionUID = 1L;
@EmbeddedId
private Id id = new Id();
@ManyToOne
@JoinColumn(insertable = false, updatable = false)
private Convenio convenio;
@ManyToOne
@JoinColumn(insertable = false, updatable = false)
private Procedimento procedimento;
private double percentualCobertura;
private double preco;
public ConvenioProcedimento() {
}
public ConvenioProcedimento(Convenio convenio, Procedimento procedimento) {
this.convenio = convenio;
this.procedimento = procedimento;
this.id.idConvenio = convenio.getId();
this.id.idProcedimento = procedimento.getId();
procedimento.getConvenioProcedimento().add(this);
convenio.getConvenioProcedimentos().add(this);
}
public Convenio getConvenio() {
return convenio;
}
public void setConvenio(Convenio convenio) {
this.convenio = convenio;
}
public double getPercentualCobertura() {
return percentualCobertura;
}
public void setPercentualCobertura(double percentualCobertura) {
this.percentualCobertura = percentualCobertura;
}
public double getPreco() {
return preco;
}
public void setPreco(double preco) {
this.preco = preco;
}
public Procedimento getProcedimento() {
return procedimento;
}
public void setProcedimento(Procedimento procedimento) {
this.procedimento = procedimento;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.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 ConvenioProcedimento)) {
return false;
}
ConvenioProcedimento other = (ConvenioProcedimento) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "br.com.sistemaodontoeasy.model.persistence.ConvenioProcedimento[id=" + id + "]";
}
}
Fiz esse modelo de classe N pra N seguindo dicas do livro "Java Persistence With Hibernate" - pág. 304, mas está dando alguns erros...
Na linha onde eu começo a escrever a minha classe :
@Embeddable
public static class Id implements Serializable {
aparece um erro no Netbeans: "the entity class must be a top-level class" - A classe de entidade deve ser uma classe de nível superior, e eu não sei como tirar essa mensagem...
Apesar deste errinho que fica aparecendo, eu consigo compilar e executar o projeto o que resulta numas tabelas muito estranhas no banco de dados:
Essa entidade devia ter os campos: idConvenio, idProcedimento, percentualCobertura e preco; mas estão aparecendo os campos: idConvenio, idProcedimento, percentualCobertura, preco, procedimento_id e convenio_id.
Como posso tirar essas mensagens e fazer o hibernate gerar as tabelas corretamente??