2017-03-06 45 views
0

我有此錯誤:JPA/Hibernate意外的AST節點。指定列名dimanically

10:54:38,330 ERROR SessionFactoryImpl:363 - Error in named query: transactions.auto org.hibernate.hql.ast.QuerySyntaxException: unexpected AST node: : near line 1, column 8 [select :fields from com.TransactionsEntity t where t.transactionDate >= :startDate and t.transactionDate <= :endDate order by id] 

意想不到的AST節點:

選擇:從 com.TransactionsEntity科技領域

清潔命名查詢:

select :fields from com.TransactionsEntity t where t.transactionDate >= :startDate and t.transactionDate <= :endDate order by id 

有是否可以使用參數添加我需要選擇的列的任何方式?我發現我不能在聲明的選擇部分使用「:」。

感謝

+0

是有一種方法。請在這裏發佈您的查詢。 –

+0

還指定您想要檢索的字段名稱。並告訴你是否需要多個結果或單個結果? –

+0

多,如果有,但我需要從以前的加載字符串像這樣指定名稱:「t.field1,t.field2」 ... – Genaut

回答

0
Query query = session.createQuery("select t.field1, t.field2 from com.TransactionsEntity t where t.transactionDate >= :startDate and t.transactionDate <= :endDate order by id"); 

這將返回對象的列表。

List<Object[]> returnedList = query.list(); 

可以遍歷它:

for (Object[] row: returnedList) { 
    System.out.println("Field 1: " + row[0]); 
    System.out.println("Field 2: " + row[1]); 
} 
+0

馬哈茂德·您好,我有此代碼的工作,只是我需要創建在namedquery領域的替換字符串,我不能讓這樣的: 「選擇t.field1,t.field2從......」我需要這樣的東西這個「select:fields from」,然後當我使用Query對象時,進行替換。就像日期參數 – Genaut

+0

那麼你想動態指定列名? –

+0

是的,我想使dinamyc我覺得休眠的標準API可以幫助列 – Genaut