Hibernate Spring无法解析属性基本查询

时间:2013-02-10 16:41:41

标签: mysql spring hibernate

我试图执行一个非常基本的查询,我收到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,所有列都具有相同的实体名称。

感谢。

1 个答案:

答案 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/ - 感谢。