私はJavaと休止状態が初めてです。
ExpenseType.java
public class ExpenseType extends BaseDomain {
private int companyId;
private String name;
private String description;
private Company company;
// Getters and Setters
}
Company.java
public class Company extends BaseDomain {
private String name;
private String address;
private String contactNumber;
private String emailAddress;
// Getters and Setters
}
ExpenseType と Company の 2 つのオブジェクトがあります。彼らにはmany-to-one
関係があります。マッピングはこのファイルにありますexpenseType.hbm.xml
。
expenseType.hbm.xml
<hibernate-mapping>
<class name="bp.ar.domain.hibernate.ExpenseType" table="EXPENSE_TYPE">
.
.
<property name="companyId">
<column name="COMPANY_ID"/>
</property>
<many-to-one name="company" class="bp.ar.domain.hibernate.Company" fetch="select" insert="false" update="false" lazy="false">
<column name="COMPANY_ID" not-null="true" />
</many-to-one>
</class>
</hibernate-mapping>
ExpenseType テーブルに COMPANY_ID 外部キーがあります。
ファイルでの私の実装では、次のようなことを行います ExpenseTypeDaoImpl.java
@Override
public Collection<ExpenseType> getAll(int companyId, Collection<Company> companies,
ExpenseTypeField orderBy) {
DetachedCriteria dc = getDetachedCriteria();
dc.addOrder(Order.asc("company"));
dc.addOrder(Order.asc(orderBy.name()));
return getAll(dc);
}
私が本当に実現したいのは、ExpenseType の結果が会社名に基づいて順序付けられることです。上記のコードで起こることは、COMPANY_ID に基づいて ExpenseType を並べ替えるということです。使用しようとしましdc.addOrder(Order.asc("company.name"));
たが、エラーが発生します。
このエラーがあります:
org.hibernate.QueryException: could not resolve property: company.name of: bp.ar.domain.hibernate.ExpenseType
助けてください。前もって感謝します。