0

非常に基本的なクエリを実行しようとしていて、org.hibernate.QueryException: could not resolve プロパティを受け取りました。これは私のエンティティです:

@Entity

@Table(name = "pm_screenconfiguration") public class ScreenConfiguration extends 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 を使用しており、すべての列のエンティティの名前が同じです。

ありがとう。

4

1 に答える 1

1

問題は @Id フィールドの宣言にありました。主キーが複数のフィールドに対して構成されている場合、IdClass を指定する必要があります。( @Embbeded アノテーションを使用する別の方法があります)。

@Id で注釈を付けたフィールドを使用して IdClass を作成しました。エンティティには、その 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/ - ありがとう。

于 2013-02-10T23:22:11.877 に答える