我试图执行一个非常基本的查询,我收到org.hibernate.QueryException:无法解析属性。 这是我的实体:
@Entity
@Table(name =“pm_screenconfiguration”) 公共类ScreenConfiguration扩展了PubliMovilEntity {
/**
* serial.
*/
private static final long serialVersionUID = -5337034940299810600L;
@Id
@Column(name = "code")
private String code;
@Id
@Column(name = "companyCode")
private int companyCode;
@Id
@Column(name = "applicationId")
private int applicationId;
@Column(name = "value")
private String value;
/**
* @return the code
*/
public String getCode() {
return code;
}
/**
* @param code the code to set
*/
public void setCode(String code) {
this.code = code;
}
/**
* @return the value
*/
public String getValue() {
return value;
}
/**
* @param value the value to set
*/
public void setValue(String value) {
this.value = value;
}
/**
* @return the companyCode
*/
public int getCompanyCode() {
return companyCode;
}
/**
* @param companyCode the companyCode to set
*/
public void setCompanyCode(int companyCode) {
this.companyCode = companyCode;
}
/**
* @return the applicationId
*/
public int getApplicationId() {
return applicationId;
}
/**
* @param applicationId the applicationId to set
*/
public void setApplicationId(int applicationId) {
this.applicationId = applicationId;
}
}
这是我的疑问:
public List<BaseEntity> getList(BaseSearchCriteria searchCriteria) {
Criteria criteria = getSessionFactory() .openSession().createCriteria(ScreenConfiguration.class);
if (searchCriteria.getApplicationId() != null) {
criteria.add(Restrictions.eq("applicationId", searchCriteria.getApplicationId()));
}
if (searchCriteria.getCompanyCode() != null) {
criteria.add(Restrictions.eq("companyCode", searchCriteria.getCompanyCode()));
}
return criteria.list();
}
我真的无法理解。我使用MySql,所有列都具有相同的实体名称。
感谢。
答案 0 :(得分:1)
问题在于@Id字段声明。 当主键由多个字段组成时,您必须指定一个IdClass。 (还有另一种使用@Embbeded注释的方法)。
我创建了一个IdClass,其中包含我用@Id注释的字段,在实体中我有一个IdClass的引用。
@Entity
@Table(name = "pm_screenconf")
@IdClass(ScreenConfigurationPK.class)
public class ScreenConfiguration extends PubliMovilEntity {
请参阅:http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/ - 感谢。