0 Replies Latest reply on Sep 12, 2006 1:04 PM by Sebastian J. Marchano

    EntityManager find does not fill Entities

    Sebastian J. Marchano Newbie

      Hello, I'm using Jboss 4.0.4 installed with EJB. and I'm having a problem with the EntityManager.

      It seems that it does not initialize the Entitys when I try to get an object from the DB with the find method.

      This is my test unit code:

       public void testIngresarPrestacion(){
       TipoPractica tp = (TipoPractica) controladorEjb.cargar(TipoPractica.class,new Integer(1));
       System.out.println("tipoPractica.descripcion = " + tp.getDescripcion());
       }
      


      controladorEjb: an stateless session bean access remotely through JNDI
      controladorEjb.cargar: exactly the same than EntityManager.find()

      When I debug it, controladorEjb.cargar() return an instance of TipoPractica but with no property set.

      In the log file I get:

      2006-09-12 11:58:10,359 DEBUG [org.hibernate.pretty.Printer] listing entities:
      2006-09-12 11:58:10,359 DEBUG [org.hibernate.pretty.Printer] ar.com.selenca.TipoPractica{valorBase=10.0, titulo=10905, descripcion=Lifemia o lipidos totales en sangre, nomenclado=true, id=1, activo=true, fechaAlta=null, usuarioAlta=null, especialidad=null, capitulo=10904, usuarioModificacion=null, fechaModificacion=null, codigo=8614}


      when the query is executed, so it gets all the information from the DB but for some reason it does not complete the bean properly.

      I have isolate the problem in a mini Java proyect, feel free to ask me for it.

      Here is the TipoPractica java file:
      package ar.com.selenca;
      
      import java.io.Serializable;
      
      import javax.persistence.DiscriminatorValue;
      import javax.persistence.Entity;
      
      
      @Entity
      @DiscriminatorValue("TP")
      public class TipoPractica extends TipoPrestacion implements Serializable
      {
       private static final long serialVersionUID = 3688507705476263988L;
      
      
      }
      


      and TipoPrestacion :

      package ar.com.selenca;
      
      import java.util.Date;
      
      import javax.persistence.Column;
      import javax.persistence.DiscriminatorColumn;
      import javax.persistence.DiscriminatorType;
      import javax.persistence.DiscriminatorValue;
      import javax.persistence.Entity;
      import javax.persistence.GeneratedValue;
      import javax.persistence.Id;
      import javax.persistence.Inheritance;
      import javax.persistence.InheritanceType;
      import javax.persistence.Table;
      import javax.persistence.Transient;
      
      @Entity
      @Table(name="PRESTACION_TIPO")
      @Inheritance(strategy=InheritanceType.SINGLE_TABLE)
      @DiscriminatorColumn(name="PRT_TIPO",discriminatorType=DiscriminatorType.STRING)
      @DiscriminatorValue("XX")
      public abstract class TipoPrestacion
      {
       private Integer id;
       private String codigo;
       private String descripcion;
      
       private double valorBase;
       private String especialidad;
       private Integer capitulo;
       private Integer titulo;
      
       private boolean nomenclado = true;
      
       private Date fechaAlta;
       private String usuarioAlta;
       private Date fechaModificacion;
       private String usuarioModificacion;
      
       private boolean activo = true;
      
       @Column(name="PRT_CODIGO",nullable=false)
       public String getCodigo()
       {
       return this.codigo;
       }
       public void setCodigo(String codigo)
       {
       this.codigo = codigo;
       }
      
       @Column(name="PRT_DESCRIPCION")
       public String getDescripcion()
       {
       return this.descripcion;
       }
       public void setDescripcion(String descripcion)
       {
       this.descripcion = descripcion;
       }
      
       @Id
       @GeneratedValue
       @Column(name="PRT_ID")
       public Integer getId()
       {
       return this.id;
       }
       public void setId(Integer id)
       {
       this.id = id;
       }
      
       @Column(name="PRT_ACTIVO")
       public boolean getActivo()
       {
       return activo;
       }
       public void setActivo(boolean activo)
       {
       this.activo = activo;
       }
      
       @Column(name="PRT_FECHA_ALTA")
       public Date getFechaAlta()
       {
       return fechaAlta;
       }
       public void setFechaAlta(Date fechaAlta)
       {
       this.fechaAlta = fechaAlta;
       }
      
       @Column(name="PRT_FECHA_MODIFICACION")
       public Date getFechaModificacion()
       {
       return fechaModificacion;
       }
       public void setFechaModificacion(Date fechaModificacion)
       {
       this.fechaModificacion = fechaModificacion;
       }
      
       @Column(name="PRT_USUARIO_ALTA")
       public String getUsuarioAlta()
       {
       return usuarioAlta;
       }
       public void setUsuarioAlta(String usuarioAlta)
       {
       this.usuarioAlta = usuarioAlta;
       }
      
       @Column(name="PRT_USUARIO_MODIFICACION")
       public String getUsuarioModificacion()
       {
       return usuarioModificacion;
       }
       public void setUsuarioModificacion(String usuarioModificacion)
       {
       this.usuarioModificacion = usuarioModificacion;
       }
      
       @Column(name="PRT_ESPECIALIDAD")
       public String getEspecialidad()
       {
       return this.especialidad;
       }
       public void setEspecialidad(String especialidad)
       {
       this.especialidad = especialidad;
       }
      
       @Column(name="PRT_IDCAPITULO")
       public Integer getCapitulo()
       {
       return this.capitulo;
       }
       public void setCapitulo(Integer capitulo)
       {
       this.capitulo = capitulo;
       }
      
       @Column(name="PRT_IDTITULO")
       public Integer getTitulo()
       {
       return this.titulo;
       }
       public void setTitulo(Integer titulo)
       {
       this.titulo = titulo;
       }
      
       @Column(name="PRT_NOMENCLADO")
       public boolean isNomenclado()
       {
       return this.nomenclado;
       }
       public void setNomenclado(boolean nomenclado)
       {
       this.nomenclado = nomenclado;
       }
      
       @Column(name="PRT_VALOR_BASE")
       public double getValorBase()
       {
       return valorBase;
       }
       public void setValorBase(double valorBase)
       {
       this.valorBase = valorBase;
       }
      
       @Transient
       public String getIdentidad()
       {
       return this.descripcion + " [" + this.codigo + "] ";
       }
      }
      


      Thanks in advance.

      ----
      Sebastian Javier Marchano
      www.selenca.com