我正在关注本教程。我在我正在检索admin_roles表的地方添加了另一个DAO。方法看起来像这样
public List findAllAdminRoleByUserName(String userName) {
List<AdminRoles> users = new ArrayList<AdminRoles>();
Query hqlQuery = sessionFactory.getCurrentSession().createQuery("from admin_roles AdminRoles where AdminRoles.username = ?");
users = hqlQuery.setString(0, userName).list();
if (users.size() > 0) {
return users;
} else {
return null;
}
}
当我尝试检索时,出现以下错误
HTTP Status 500 - Request processing failed; nested exception is org.hibernate.hql.internal.ast.QuerySyntaxException: admin_roles is not mapped [from admin_roles AdminRoles where AdminRoles.username = ?]
我可以从本教程中提到的admin表中获取值,还创建了一些其他表可以从中获取值。但是,仅此表未映射。我还尝试通过将表名从“ admin_roles”更改为adminroles(在数据库和代码中),仍然遇到相同的错误。
相关的类如下所示。实体注释也是javax
@Entity
@Table(name = "admin_roles", uniqueConstraints = @UniqueConstraint(columnNames = { "role", "username" }))
public class AdminRoles{
我想念什么吗?提前致谢
您会混淆表和实体。表是关系数据库的概念。它们被映射到实体,它们是Java类。HQL使用实体。总是。从不表。
顺便说一句,该消息不是“表未映射”。它是“未映射admin_roles”。那是非常不同的。HQL使用实体,因此它希望admin_roles
在查询中成为映射的实体。不是表名。而且您没有任何名为的实体admin_roles
。
查询应该是
select ar from AdminRoles ar where ar.username = ?
当然,这假定username
在AdminRoles
实体类中有一个映射的字段/属性。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句