@NamedStoredProcedureQueryアノテーションを使用して、休止状態からストアドプロシージャを呼び出しています。私のストアドプロシージャは2つのテーブルからフィールドを返し、postgresqlから次のように呼び出すことができます。
select * from sp_select_employees t (id int, emp_name text, emp_department text)
そのストアドプロシージャを休止状態から呼び出したいのですが、「列定義リストが必要です」というメッセージが表示されます。hibernateには
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;
}
プロシージャを変更するRETURNS TABLE
か、OUT
パラメータを追加して、列定義リストの送信に依存しないようにします。または、Hibernateでネイティブクエリを使用します。
列定義リスト、およびを返すクエリrecord
は、Hibernateが直接サポートしていないPostgreSQL拡張機能です。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加