我正在使用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”。
答案 0 :(得分:1)
您需要在查询中提及属性名称,而不是列名。
因此查询应如下所示:
String sqlQuery = "SELECT c FROM XD_FILES c WHERE c.clientId = :clientId";
答案 1 :(得分: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)