用于存储过程的Mysql结果集映射

问题描述 投票:0回答:1

我正在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();
mysql sql hibernate jpa
1个回答
0
投票

1)ConstructorResult表示您的构造函数具有相同的字段(顺序问题)

我更喜欢@EntityResult。这也需要一个构造函数,但没有参数。

2)我无法使其与createStoredProcedureQuery一起使用,所以我叫

最终查询query1 = entityManager.createNativeQuery(“ call yourProcName(PARAMS)”,“ NAME_OF_SqlResultSetMapping”);列出结果= query.getResultList();

https://www.baeldung.com/jpa-sql-resultset-mapping

© www.soinside.com 2019 - 2024. All rights reserved.