EntityManager find does not fill Entities
sebasjm Sep 12, 2006 1:04 PMHello, 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