Renato_natos 1 de mar. de 2011
Opa, posta a classe inteira por favor!
kenneth 1 de mar. de 2011
Fala brow,
No construtor voce esta fazendo…
??
Abraco!
andre1989 1 de mar. de 2011
Boa tarde
segue a classe completa
package modelo.entidade ;
import java.io.Serializable ;
import java.util.ArrayList ;
import java.util.List ;
import javax.persistence.Basic ;
import javax.persistence.CascadeType ;
import javax.persistence.Column ;
import javax.persistence.Entity ;
import javax.persistence.FetchType ;
import javax.persistence.GeneratedValue ;
import javax.persistence.Id ;
import javax.persistence.JoinColumn ;
import javax.persistence.ManyToOne ;
import javax.persistence.NamedQueries ;
import javax.persistence.NamedQuery ;
import javax.persistence.OneToMany ;
import javax.persistence.SequenceGenerator ;
import javax.persistence.Table ;
@Entity
@Table ( name = "empresa" )
@SequenceGenerator ( sequenceName = "empresa_id_seq" , allocationSize = 1 , initialValue = 0 , name = "empresa_id_seq" )
public class Empresa implements Serializable {
@Id
@GeneratedValue ( generator = "empresa_id_seq" )
@Basic ( optional = false )
@Column ( name = "id" )
private Integer id ;
@Column ( name = "nome" )
private String nome ;
@Column ( name = "cnpj" )
private String cnpj ;
@OneToMany ( mappedBy = "idPai" )
private List < Empresa > empresaList ;
@JoinColumn ( name = "id_pai" , referencedColumnName = "id" )
@ManyToOne ( cascade = { CascadeType . PERSIST , CascadeType . REMOVE , CascadeType . MERGE }, fetch = FetchType . LAZY )
private Empresa idPai ;
public Empresa () {
empresaList = new ArrayList < Empresa > ();
idPai = new Empresa ();
}
public Integer getId () {
return id ;
}
public void setId ( Integer id ) {
this . id = id ;
}
public String getNome () {
return nome ;
}
public void setNome ( String nome ) {
this . nome = nome ;
}
public String getCnpj () {
return cnpj ;
}
public void setCnpj ( String cnpj ) {
this . cnpj = cnpj ;
}
public List < Empresa > getEmpresaList () {
return empresaList ;
}
public void setEmpresaList ( List < Empresa > empresaList ) {
this . empresaList = empresaList ;
}
public Empresa getIdPai () {
return idPai ;
}
public void setIdPai ( Empresa idPai ) {
this . idPai = idPai ;
}
@Override
public int hashCode () {
int hash = 0 ;
hash += ( id != null ? id . hashCode () : 0 );
return hash ;
}
@Override
public boolean equals ( Object object ) {
if ( ! ( object instanceof Empresa )) {
return false ;
}
Empresa other = ( Empresa ) 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 "modelo.entidade.Empresa[id=" + id + "]" ;
}
}
kenneth 1 de mar. de 2011
Fala brow,
Acredito que seu problema esteja no construtor…
Mais precisamente onde ele faz idPai = new Empresa() …
Esse new Empresa chama mais um, que chama mais um, e assim vai…
Abraco!
Renato_natos 1 de mar. de 2011
Da forma que esta, acontece o seguinte:
Quando instanciar empresa, sera criado uma nova empresa, que criara uma nova empresa, que criara uma nova empresa…
Vc precisa mesmo instanciar o objeto e a lista no contrutor?
Vc poderia criar um metodo para instanciar os dois e chama-lo quando necessario!
EX:
public void instanciar (){
empresaList = new ArrayList < Empresa > ();
idPai = new Empresa ();
}
e quando vc precisar instanciar os objetos eh soh chamar o metodo instanciar()
Entendeu?
andre1989 1 de mar. de 2011
Ok entendi,
Achei que tinha como fazer no mapeamento do hibernate uma espécie de (lazy load);
Mas não tem problema, vou utilizar a solução de criar um metodo para instanciar os objetos, sem ser no construtor.
Valeu pela ajuda galera…
kenneth 1 de mar. de 2011
Beleza brother…
So coloca [Resolvido] no titulo.
Abraco