Im新的java和hibernate。Hibernate - 如何根據另一個對象的屬性來訂購結果
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
}
我有2個ojects ExpenseType和公司。他們有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
請幫助。提前致謝。
發佈您收到的錯誤 – 2012-04-26 00:20:18
@ kmb385我現在更新它。 – NinjaBoy 2012-04-26 00:22:50
您不應該在ExpenseType中同時映射company和companyId。只需使用公司。 – MALfunction84 2012-04-26 00:27:09