JPQL createQuery 抛出非法ArgumentException
Posted
技术标签:
【中文标题】JPQL createQuery 抛出非法ArgumentException【英文标题】:JPQL createQuery throws illegalArgumentException 【发布时间】:2010-10-17 07:10:53 【问题描述】:以下简单代码抛出异常:
entityManager.createQuery("SELECT c FROM Customer c");
但是如果我写了
entityManager.createNativeQuery("SELECT c.* FROM Customer c", Customer.class)
然后它可以正常工作。可能有什么问题?我使用带有 Toplink-essentials 的 GlassFish v2.1。
【问题讨论】:
能否添加异常的堆栈跟踪? 【参考方案1】:只要您将类 Customer 定义为实体,JPQL 查询“SELECT c FROM Customer c”就有效。该方法仅在查询由于某种原因“无效”时抛出异常,如果出现问题,任何体面的 JPA 实现都应该在异常消息中提供更多信息
--安迪 (DataNucleus)
【讨论】:
谢谢安迪。我有带有 @Entity 注释的 Customer 类。正如我所说,本机查询返回客户对象没有任何问题,但普通的 jpa 查询不起作用。 所以我建议您要么使用 TopLink 日志和邮件列表,要么尝试其他确实支持此类语法的 JPA 实现(例如 DataNucleus)。 好吧,安迪你是对的。我使用表名而不是类名。实际上我的查询是“SELECT c FROM customer_info c”。以上是关于JPQL createQuery 抛出非法ArgumentException的主要内容,如果未能解决你的问题,请参考以下文章