У меня есть объект со встроенным ключом. У сущности есть только ключ в качестве поля, а ключ имеет 7 полей, некоторые из которых могут быть нулевыми.
Когда я запускаю следующий запрос:
Criteria criteria = session.createCriteria(getPersistentClass());
criteria.add(Restrictions.eq("id.profPropertyId", profileExtensionName));
Object obj = criteria.list();
log.info(obj);
return (List<ProfileExtensions>) obj;
Я получаю правильное количество результатов, но каждый результат равен нулю (т.е. я получаю список из 4000 пустых объектов). Я пытался использовать как HQL-запрос, так и критерии, но оба они дают одинаковый результат.
Классы отображения были сгенерированы из существующей базы данных.
SQL, сгенерированный для запроса, выглядит следующим образом
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=?
Похоже, он должен вернуть правильные данные.
Файл сопоставления довольно прост (и сгенерирован из схемы:
// 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", column=@Column(name="PROF_KEY", nullable=false, length=36) ),
@AttributeOverride(name="profPropertyId", column=@Column(name="PROF_PROPERTY_ID", nullable=false, length=64) ),
@AttributeOverride(name="profExtKey", column=@Column(name="PROF_EXT_KEY", length=256) ),
@AttributeOverride(name="profName", column=@Column(name="PROF_NAME", length=256) ),
@AttributeOverride(name="profDataType", column=@Column(name="PROF_DATA_TYPE", length=64) ),
@AttributeOverride(name="profValue", column=@Column(name="PROF_VALUE", length=1024) ),
@AttributeOverride(name="profValueExtended", column=@Column(name="PROF_VALUE_EXTENDED") ) } )
public ProfileExtensionsId getId() {
return this.id;
}
public void setId(ProfileExtensionsId id) {
this.id = id;
}
}