Tengo una entidad con una clave incrustada. La entidad solo tiene la clave como campo y la clave tiene 7 campos, algunos de los cuales pueden ser nulos.Lista nula devuelta desde la consulta de hibernación con el id. Integrado
Cuando funciono la siguiente consulta:
Criteria criteria = session.createCriteria(getPersistentClass());
criteria.add(Restrictions.eq("id.profPropertyId", profileExtensionName));
Object obj = criteria.list();
log.info(obj);
return (List<ProfileExtensions>) obj;
I obtener el número correcto de los resultados, pero cada resultado es nulo (es decir consigo una lista de 4000 objetos nulos). He intentado utilizar tanto una consulta HQL como criterios, pero ambos dan el mismo resultado.
Las clases de mapeo se generaron a partir de una base de datos existente.
El SQL generado por la consulta es la siguiente
select this_.PROF_DATA_TYPE as PROF1_14_0_, this_.PROF_EXT_KEY as PROF2_14_0_,
this_.PROF_KEY as PROF3_14_0_, this_.PROF_NAME as PROF4_14_0_,
this_.PROF_PROPERTY_ID as PROF5_14_0_, this_.PROF_VALUE as PROF6_14_0_,
this_.PROF_VALUE_EXTENDED as PROF7_14_0_
from EMPINST.PROFILE_EXTENSIONS this_
where this_.PROF_PROPERTY_ID=?
parece que debería devolver los datos correctos.
El archivo de correlación es bastante simple (y generada a partir del esquema:.
// Generated Oct 18, 2010 11:08:08 PM by Hibernate Tools 3.2.2.GA
import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
@Entity
@Table(name="PROFILE_EXTENSIONS"
,schema="EMPINST"
, uniqueConstraints = @UniqueConstraint(columnNames={"PROF_KEY", "PROF_PROPERTY_ID"}))
public class ProfileExtensions implements java.io.Serializable {
private ProfileExtensionsId id;
public ProfileExtensions() {
}
public ProfileExtensions(ProfileExtensionsId id) {
this.id = id;
}
@EmbeddedId
@AttributeOverrides({
@AttributeOverride(name="profKey", [email protected](name="PROF_KEY", nullable=false, length=36)),
@AttributeOverride(name="profPropertyId", [email protected](name="PROF_PROPERTY_ID", nullable=false, length=64)),
@AttributeOverride(name="profExtKey", [email protected](name="PROF_EXT_KEY", length=256)),
@AttributeOverride(name="profName", [email protected](name="PROF_NAME", length=256)),
@AttributeOverride(name="profDataType", [email protected](name="PROF_DATA_TYPE", length=64)),
@AttributeOverride(name="profValue", [email protected](name="PROF_VALUE", length=1024)),
@AttributeOverride(name="profValueExtended", [email protected](name="PROF_VALUE_EXTENDED")) })
public ProfileExtensionsId getId() {
return this.id;
}
public void setId(ProfileExtensionsId id) {
this.id = id;
}
}
¿Qué SQL se genera? También muestre su mapeo (simplificado si es posible) y la tabla. –