Olá pessoal!!
Segue minha classe de persistência do hibernate:
[code]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 + “]”;
}
}[/code]
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??