2013-04-27 123 views
0

我有问题:让我们假设我有两个类用户和员工,员工扩展用户,在用户我有@Inheritance(strategy = InheritanceType.JOINED)。以这种方式获得员工是否正确“从用户p WHERE p.login =:登录和p.password =:密码”;登录和密码属性在用户中。休眠继承从

ERROR: org.hibernate.hql.internal.ast.QuerySyntaxException: USER is not mapped [FROM USER p WHERE p.login = :login AND p.password = :password]

+0

当您尝试时发生了什么?请注意,这不是一个SQL查询,而是一个HQL查询。 – 2013-04-27 21:00:45

+0

我仍然得到NullPointerException – adaniluk 2013-04-27 21:01:48

+0

那么你为什么不问你为什么会得到一个NullPointerException,向我们展示你的代码和异常的完整堆栈跟踪? – 2013-04-27 21:05:40

回答

1

HQL使用类名和映射属性/特性名称。总是。它不使用表和列名称。决不。所以,如果你的类名为User,如您最初的问题时说,当它应该被命名尊重的Java命名约定,要求您提供的查询应该很好地工作:

FROM User p WHERE p.login = :login AND p.password = :password 

例外说,查询实际上是

FROM USER p WHERE p.login = :login AND p.password = :password 

由于USER不是被映射的实体类的名称,所以它是无效的,正如例外说的那样。

另请注意,该异常不是NullPointerException,而是QuerySyntaxException。

+1

我改变了它,并重新启动服务器,但日食欺骗我,并没有重新启动服务器,所以我认为这是不同的错误,但现在它的工作原理 – adaniluk 2013-04-27 21:20:11