2016-11-19 89 views
2

我正在使用JPA查詢OracleSQL數據庫。 不過,我得到的錯誤:EntityManager查詢無法解析屬性

Request processing failed; nested exception is java.lang.IllegalArgumentException: org.hibernate.QueryException: could not resolve property: CLIENT_ID of: com.fdmgroup.pojo.File [SELECT c FROM com.fdmgroup.pojo.File c WHERE c.CLIENT_ID = :clientId] 

當我寫了下面的查詢

String sqlQuery = "SELECT c FROM XD_FILES c WHERE c.CLIENT_ID = :clientId"; 
TypedQuery<File> query = em.createQuery(sqlQuery, File.class); 
query = query.setParameter("clientId", clientId); 
ArrayList<File> clientFiles = (ArrayList<File>) query.getResultList(); 

文件中有此列

@ManyToOne(targetEntity = Client.class) 
@JoinColumn(name = "CLIENT_ID") 
private Client client; 

我不清楚爲什麼,因爲它似乎有字段「客戶端」鏈接到「CLIEND_ID」。

+0

什麼是列名? –

+1

你的「sqlQuery」是SQL,但你使用JPQL的API! –

回答

1

您需要在查詢中提及屬性名稱,而不是列名稱。

所以查詢應該如下所示:

String sqlQuery = "SELECT c FROM XD_FILES c WHERE c.clientId = :clientId"; 
1

您的查詢似乎本地查詢,而不是一個JPQL,您可以通過兩種方式解決這個問題。

1)更改em.createQuery(sqlQuery,File.class); em.createNativeQuery(sqlQuery,File.class);

2)更改從本地查詢到JPQL查詢,查詢應該像

select c from File c where c.client.clientID=:clientId 
(Assuming clientID is primary key column name in Client class) 
相關問題