2

我正在使用 JPA 查询 OracleSQL 数据库。但是,我收到错误:

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”。

4

2 回答 2

1

您需要在查询中提及属性名称,而不是列名称。

所以查询应该如下所示:

String sqlQuery = "SELECT c FROM XD_FILES c WHERE c.clientId = :clientId";
于 2016-11-19T00:46:44.307 回答
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)
于 2016-11-19T10:00:30.513 回答