JPA 中的 nativeQuery
Posted
技术标签:
【中文标题】JPA 中的 nativeQuery【英文标题】:nativeQuery in JPA 【发布时间】:2015-06-22 11:21:53 【问题描述】:我是 JPA 的新手。
我正在尝试在 3 个表上创建一个具有 3 个连接的本地查询。
我写了一个类似于下面的原生查询:
Query query=entityManager.createNativeQuery("select p.value,m.value,t.value,t.value from ping as p,ming as m,ting as t where p.id=m.vid and m.id=t.vid");
List<Object[]> list = (List<Object[]>) query.getResultList();
我的数据库中有 3 个表 ping、ming、ting。
我在执行过程中遇到语法错误。
check the manual that corresponds to your mysql server version for the right syntax to use near 'ping as p,ming as m ,ting as t';
如果有人能指出错误以及在 JPA 中通过 nativequery 连接不同表的更好解决方案是什么,将会很有帮助。
编辑:我已经在 mysql 上成功运行了上述查询。
【问题讨论】:
您是否尝试使用其他工具(例如命令行客户端、phpMyAdmin 或您正在使用的任何 MySQL 工具)运行该查询? 在mysql中运行这个select p.value,m.value,t.value,t.value from ping as p,ming as m,ting as t where p.id=m.vid and m.id=t.vid
并检查它是否正确
我可以在mysql提示符下成功运行上述查询
@starkk92 删除一个 t.value 并尝试。如果这不起作用,请尝试 select p.value,m.value as value1,t.value as value2 from ping as p inner join ming as m on p.id=m.vid inner join ting as t on m.id=t.vid
并让我知道您是否成功
我已经尝试过了,它在提示符下工作正常,而不是在代码中。
【参考方案1】:
'ping as p,ming as m ,ting as t'
尝试用点代替昏迷。
也许你的语法不正确
【讨论】:
文档?你是说dot吗? 点,是的。对不起我的英语不好:(【参考方案2】:列上的别名是如何导致问题的。
我尝试在列上不带别名的情况下运行程序,一切都很好。
在这里找到了类似的问题。 hibernate native SQL query error
【讨论】:
以上是关于JPA 中的 nativeQuery的主要内容,如果未能解决你的问题,请参考以下文章
JPA 一个实体中的两个惰性集合 - 如何运行 JPA 查询以获取实体和只有一个集合