2013-02-18 48 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();