2016-11-19 4 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, но вы используете API для JPQL! –

ответ

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) 
Смежные вопросы