0

我有一个问题:假设我有两个类 User 和 Employee,Employee 扩展 User,在 User 中我有 @Inheritance(strategy=InheritanceType.JOINED)。以这种方式获取员工是否正确“来自用户 p WHERE p.login = :login AND p.password = :password”; 登录名和密码属性在用户中。

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

4

1 回答 1

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。

于 2013-04-27T21:17:53.723 回答