我有一個方法,它通過一個簡單的 Id 回傳一個員工,entitymanager.find(id)但現在我需要找到一個id分配給它的員工,(類Employee和Salary映射通過OneToMany),我應該使用entityManager.find()還是entityManager.createQuery()?
@Override
public Optional<Employee> findById(Long emptNo) {
try {
return Optional.ofNullable(this.entityManager.find(Employee.class, emptNo));
} catch (EmptyResultDataAccessException e) {
return Optional.empty();
}
}
這是我需要幫助的地方:
@Override
public Optional<Employee> findByIdWithSalary(Long empNo) {
this.entityManager.createQuery("select (e.empNo,s.salary,s.fromDate,s.toDate) as from employees e, salaries s where e.empNo=s.empNo");
try {
return Optional.ofNullable(this.entityManager.find(Employee.class, empNo));
} catch (EmptyResultDataAccessException e) {
return Optional.empty();
}
}
uj5u.com熱心網友回復:
您需要像下面這樣更改查詢。
@Override
public Optional<Employee> findByIdWithSalary(Long empNo) {
this.entityManager.createQuery("select * from employees e left join e.empNo=s.empNo where s.salary >0");
try {
return Optional.ofNullable(this.entityManager.find(Employee.class, empNo));
} catch (EmptyResultDataAccessException e) {
return Optional.empty();
}
}
如果它不起作用,請發送您的物體類。我們也可以這樣做。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/341625.html
