【问题标题】:Typed query exception类型化查询异常
【发布时间】:2016-09-14 04:57:26
【问题描述】:

我是 maven 和 java 的新手。我正在开发一个 Maven 项目,我想从 mysql DB 中选择一些具有多行的数据。 以下代码已从以下链接复制。但它不起作用。我搜索了很多,发现了一些相同的结果。但它们都不起作用。我不知道我该怎么做。

JPA, Entity manager, select many columns and get result list custom objects

我的代码:

try{
EntityManagerFactory factory = Persistence.createEntityManagerFactory("com.mycompany_LinkedIn_war_1.0-SNAPSHOTPU");
EntityManager em = factory.createEntityManager();
TypedQuery<KarjooSearchInfo[]> q = em.createQuery(" SELECT name,education,gender,more,time FROM karjoo_search_info WHERE 1 ", KarjooSearchInfo[].class);
List<KarjooSearchInfo[]> resultList = q.getResultList();
do something...
}catch....

例外是:

An exception occurred while creating a query in EntityManager: 
Exception Description: Syntax error parsing [ SELECT name,education,gender,more,time FROM `karjoo_search_info` WHERE 1 ]. 
 [69, 69] An identification variable must be provided for a range variable declaration.
 [75, 76] The expression is not a valid conditional expression.

【问题讨论】:

    标签: java maven jpa


    【解决方案1】:

    请记住,您的查询实际上是在 JPQL 中,而不是 SQL,因此您搜索的是托管类,而不是表。

    我想你可能想要:

    TypedQuery<KarjooSearchInfo[]> q = em.createQuery("SELECT K FROM KarjooSearchInfo K", KarjooSearchInfo.class);
    

    【讨论】:

      【解决方案2】:

      我建议您进行以下更改:

      • 删除 SQL 中的前导空格。
      • 返回对象的类应该是KarjooSearchInfo.class 而不是KarjooSearchInfo[].class
      • 条件应为WHERE true 而不是WHERE 1

      【讨论】:

      • tnx 为您解答。但是您的解决方案不起作用!
      • createQuery 采用 JPQL。它不接受 SQL。
      猜你喜欢
      • 2012-09-07
      • 1970-01-01
      • 2012-07-07
      • 2013-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多