Im new to java and 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
}
I have 2 ojects ExpenseType and Company. They have a many-to-one
relationship. The
mapping is in this file 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>
I have COMPANY_ID foreign key in my ExpenseType table.
In my implementation in the file ExpenseTypeDaoImpl.java
I do something like
@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);
}
What I really want to happen is that the result for ExpenseType will be ordered based on the company name. What happens with code above is that it orders the ExpenseType based on tbe COMPANY_ID. I tried to use dc.addOrder(Order.asc("company.name"));
but I get an error.
I have this error:
org.hibernate.QueryException: could not resolve property: company.name of: bp.ar.domain.hibernate.ExpenseType
Please help. Thanks in advance.