我正在使用 @NamedStoredProcedureQuery 注释从休眠中调用存储过程。我的存储过程从 2 个表返回字段,我可以从 postgresql 调用它,如下所示:
select * from sp_select_employees t (id int, emp_name text, emp_department text)
我想从休眠中调用该存储过程,但我得到“需要列定义列表”。我知道它是因为休眠不包括
t (id int, emp_name text, emp_department text)
部分。我如何在休眠中做到这一点?以下是我的 JPA 课程
@NamedStoredProcedureQuery(
name = "SelectEmployees",
resultClasses = EmployeeDetails.class,
procedureName = "sp_select_employees"
)
public class Employees implements java.io.Serializable {
....
}
我称之为休眠的代码
public List<EmployeeDetailsDTO> getEmployeeDetails()
{
StoredProcedureQuery query = em.createNamedStoredProcedureQuery("SelectEmployees");
final List<EmployeeDetails> searchResults = query.getResultList();
final List<EmployeeDetailsDTO> results = new ArrayList<EmployeeDetailsDTO>();
for (Campaigns searchResult : searchResults)
{
EmployeeDetailsDTO dto = new EmployeeDetailsDTO(searchResult);
results.add(dto);
}
return results;
}