输入的查询异常

时间:2016-05-17 22:23:38

标签: java maven jpa

我是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.

2 个答案:

答案 0 :(得分:1)

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

我想你可能想要:

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

答案 1 :(得分:0)

我建议您进行以下更改:

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