如何使用hibernate在table-per-hierarchy中获取具体类的所有对象?

时间:2014-02-28 15:33:33

标签: java hibernate table-per-hierarchy

我正在使用Spring MVC和Hibernate使用Netbeans(Maven Web应用程序)开发Web应用程序。我有一个抽象类(User),有多个具体类(Parent,Child等)。我选择了每个层次结构的表构造,以便我有1个表,其中包含这些具体类的所有对象。但我无法找到获得某个具体类的所有对象的方法。我收到了以下错误:

java.lang.IllegalArgumentException:为TypedQuery [domain.Parent]指定的类型与查询返回类型[class domain.User]

不兼容

任何知道我如何投射这些物品的人?

1 个答案:

答案 0 :(得分:0)

您的BD中应该有一个鉴别器columen,以及类似的映射:

@DiscriminatorColumn(name="TYPE", discriminatorType=DiscriminatorType.INTEGER)
public abstract class User {

@DiscriminatorValue("1")
public class Parent extends User {

然后,您可以在查询中使用属性类。例如:

getSession().createCriteria(User.class).add(Restrictions.eq("class", 1))

或在HQL中:

FROM User WHERE class = 1