我需要使用jpa调用一个存储过程。存储过程对多个表进行操作,并返回这些表中的一些列。
尝试使用@procedure它似乎不起作用,在这种情况下总是找不到存储过程。
使用本机查询直接调用过程是成功的,但是使用这种方法,我需要将返回的结果Map到对象的列表。
我在存储库中的实现如下所示,
@Query(value = "EXECUTE dbs.multitable_Test :inputObj", nativeQuery = true)
List<sp> multitable_Test(@Param("inputObj")String inputObj);
存储过程返回的结果需要Map到sp类。
当我们在单个结果集中有多个表响应时,如何实现这一点?
已经从这个链接尝试了attributeconvert,仍然得到下面的异常。 org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type
感谢您的帮助。
1条答案
按热度按时间pgvzfuti1#
首先,这实际上不是过程的用例。过程旨在修改数据库中的数据,而不返回任何值,然后可以使用:
你应该使用函数
create function
语法。函数可以修改数据并返回结果。其次,如果您想将它Map到某个类,我将看到两个解决方案(使用
EntityManager
):使用
ResultTransformer
:请注意
ResultTransformer
已弃用,但功能强大,除非有合理的替换,否则不会删除,请参阅hibernate developer的说明。使用
ResultSetMapping
. 在实体上放置适当的注解:并使用Map作为参数调用函数: