2016-05-17 69 views
0

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

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. 

回答

0

我建议你以下变化:

  • 切去领导从空白SQL。
  • 返回对象的类应该是KarjooSearchInfo.class而不是KarjooSearchInfo[].class
  • 条件应该是WHERE true而不是WHERE 1
+0

TNX你的答案。但你的解决方案不起作用! –

+0

createQuery接受JPQL。它不采用SQL。 –

1

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

我想你可能想:

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