2015-01-28 5 views
-1

У меня однонаправленная связь. Здесь у меня есть сущности Employee и Andress. В сущности Сотрудника я есть следующий код:JPA перейти однонаправленная связь

@OneToOne(cascade=CascadeType.ALL) 
@JoinColumn(name = "HOME_ADDRESS") 
private Address homeAddress; 

Что такое правильный способ найти объект Employee, когда у меня есть только объект адреса. Могу ли я сделать это только через jpql?

ответ

2

Вы могли бы сделать это так, если у вас есть, например, идентификатор адреса

select e from Employee e where e.homeAddress.id = :addressId 

Использование Hibernate критериев API, это будет выглядеть следующим образом

Criteria criteria = session.createCriteria(Employee.class); 
criteria.createAlias("homeAddress", "homeAddress"); 
criteria.add(Restrictions.eq("homeAddress.id", addressId); 
Employee employee = (Employee)criteria.uniqueResult(); 
+0

Спасибо, я знаю, id, но могу ли я сделать это без использования jpql? – Tomas

+0

О, я неправильно понял вопрос, я думал, вы просите решение JPQL. Я отредактировал свой ответ с примером API критериев Hibernate. У вас было что-то еще? –

+0

Я не знал, как это сделать без jpql, спасибо за введение Criteria api :) Но решение jpql кажется более простым, поэтому я буду использовать его. Возможно, вы можете ответить на мой следующий вопрос - http://stackoverflow.com/questions/28208794/jpa-lookups-with-arrays – Tomas

Смежные вопросы