使用eclipselink jpa的未知列错误

Posted

技术标签:

【中文标题】使用eclipselink jpa的未知列错误【英文标题】:Unknown column error using eclipselink jpa 【发布时间】:2017-03-06 16:37:24 【问题描述】:

我正在使用 JPA eclipse 链接和 spring 来根据字符串在数据库中查找数据。我已经实现了一个方法

@Transactional
    public String authorization(LL l)
        Query query = m.createNativeQuery("SELECT a FROM user a WHERE a.name = ?");
        query.setParameter(1, l.getName());
        UserEntity tmp = (UserEntity) query.getSingleResult();

我的数据库很简单

id | name | password 

但是,执行这个我得到错误

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 未知 “字段列表”中的“a”列

我已阅读文档,这应该是执行此类查询的正确方法。为什么会抛出所说的错误?是我犯了错误还是忽略了什么?

感谢所有帮助。

【问题讨论】:

那不是 SQL。是JPQL 【参考方案1】:

您似乎希望得到一个实体作为结果,所以不是原生查询:

m.createNativeQuery

使用

m.createQuery

更新

如果您需要使用原生查询,您应该添加预期的结果类:

Query query = m.createNativeQuery("SELECT a.* FROM user a WHERE a.name = ?", UserEntity.class);

【讨论】:

使用 createQuery 抛出“用户”未映射错误,因为我没有使用休眠 那么您必须将结果类添加为第二个参数。您可能必须在选择条款中使用别名才能获得正确的名称

以上是关于使用eclipselink jpa的未知列错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 eclipselink 在 JPA 对象上进行 jaxb 编组期间的日期对话错误

JPA 从 EclipseLink 到哪个提供商?

使用 EclipseLink JPA 将 XML 类型存储到 PostgreSQL

JPA 2.0 如何处理死锁(Eclipselink JPA2.0 MySQL)

评估 JPA 提供商:Hibernate/EclipseLink 的市场份额?

SPRING DATA-JPA + eclipseLink2.0 失败