2013-02-18 45 views
0

我想創建一些別名來構建一個條件,以便通過許多子類的屬性進行搜索。這裏是我的模型:在Hibernate中創建別名來引用子類問題

public abstract class Entity { 

protected int id; 
protected PartyBasicGroup partyBasicGroup; 

} 

public class Person extends Entity { 

} 

public class Organization extends Entity { 

protected PartyBasicGroup signatoryBasicGroup; 
protected String jobTitle; 
} 

我試圖創建人物和組織一些別名如下:

criteria = criteria.createAlias("entity.person", "person", JoinType.LEFT_OUTER_JOIN); 
criteria = criteria.createAlias("entity.organization", "organization", JoinType.LEFT_OUTER_JOIN); 

但我發現了一個錯誤:

Couldn't resolve property person for Entity 

任何幫助解決這個問題?我只想知道如何創建別名來引用子類以訪問子類屬性。

謝謝!

+2

您試圖在此執行的最終查詢是什麼?因爲「entity.person」和「entity.organization」沒有意義,Person和Organization是Entity的子類,而不是屬性! – overmeulen 2013-02-18 15:45:02

+0

我正在嘗試搜索特定的jobTitles,但我不知道如何創建訪問組織屬性的別名。我知道有子類,但我在另一個代碼中看到Hibernate允許將它們作爲屬性來處理。 – user2083783 2013-02-18 16:39:22

回答

0

我不明白你爲什麼要在這裏使用別名。以下內容應該足夠了:

Criteria criteria = session.createCriteria(Organization.class); 
criteria = criteria.add(Restrictions.eq("jobTitle", "XYZ")); 
List<Organization> organizations = (List<Organization>) criteria.list();