我正在spring mvc中使用一个过程。我想对程序返回的结果进行sqlresultsetmapping。该过程不会返回任何与实体相关的结果。我该如何执行该过程的sqlresultsetmapping。
在声明的类emp中编写的Sql映射:
@SqlResultSetMapping(name = "sampleemp", classes = {
@ConstructorResult(targetClass = emp.class,
columns = { @ColumnResult(name = "id"),
@ColumnResult(name = "name"),
@ColumnResult(name = "department"),
})
})
以相同的类emp编写的NamedStoredProcedureQuery:
@NamedStoredProcedureQuery(name = "employee", procedureName = "sample", parameters =
{ @StoredProcedureParameter(mode = ParameterMode.IN, name = "id", type = Integer.class),
@StoredProcedureParameter(mode = ParameterMode.IN, name = "name", type = String.class),
@StoredProcedureParameter(mode = ParameterMode.IN, name= "department", type = String.class)
},
resultSetMappings = { "sampleemp" })
使用以下代码在调用存储过程时如何从DAO层映射它们:
StoredProcedureQuery spQuery = (StoredProcedureQuery) entityManager.createStoredProcedureQuery("sample")
.registerStoredProcedureParameter("id", Integer.class, ParameterMode.IN)
.registerStoredProcedureParameter("name", String.class, ParameterMode.IN)
.registerStoredProcedureParameter("department", String.class, ParameterMode.IN)
.setParameter("id", id)
.setParameter("name", name)
.setParameter("department", dept);
spQuery.execute();
1)ConstructorResult表示您的构造函数具有相同的字段(顺序问题)
我更喜欢@EntityResult。这也需要一个构造函数,但没有参数。
2)我无法使其与createStoredProcedureQuery一起使用,所以我叫
最终查询query1 = entityManager.createNativeQuery(“ call yourProcName(PARAMS)”,“ NAME_OF_SqlResultSetMapping”);列出结果= query.getResultList();