2016-11-19 65 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) 
相关问题