gpt4 book ai didi

mysql - Hibernate QuerySyntaxException,表未映射

转载 作者:行者123 更新时间:2023-11-29 07:32:44 25 4
gpt4 key购买 nike

我正在关注这个Tutorial 。我添加了另一个 DAO,用于检索 admin_roles 表。该方法如下所示

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_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 = ?

当然,假设 AdminRoles 实体类中有一个名为 username 的映射字段/属性。

关于mysql - Hibernate QuerySyntaxException,表未映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32025762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com