hibernate 有没有一种方法可以将实体数组传递到存储过程中?

332nm8kg  于 2023-11-21  发布在  其他
关注(0)|答案(1)|浏览(135)

我有一个项目,它使用Hibernate,并需要将实体数组传递到存储过程。
有关于存储过程的教程/文档,使用数组的过程,简单/自定义数据类型。我可以找到这些。但是我没有找到 * 一个 * 答案/博客文章/示例/无论如何将N个实体传递到存储过程。我能找到的是几十个未回答的问题,关闭jira tickets等。
有可能吗?我猜它的路径可能是:在oracle(或其他数据库)中创建自定义类型,创建接受该自定义类型的存储过程,然后以某种方式将整个实体Map到该自定义类型(从未这样做过),然后以某种方式从springdata调用该自定义类型的存储过程(从未这样做过)。应该/可以工作,但缺乏证据任何人这样做是可怕的。
有人能确认概述的路径将工作,或者更好的是,可以显示一些例子/文档显示完成?
注意事项:我不想讨论其他的策略,如何在没有存储过程的情况下达到“同样的结果”,或者类似的想法,回答:“不,这不可能用hibernate/jpa”这完全没问题,而且可以保存我(和其他人)思考这个问题的时间。

w8rqjzmb

w8rqjzmb1#

据我所知:
使用db驱动程序调用存储过程是微不足道的。通过springdata间接调用存储过程是讨厌的,但可行。从hibernate/jpa调用自定义类型的存储过程是不可能的,因为我能找到。

  • 在文档中没有显示如何使用自定义类型调用存储过程,只显示了一些琐碎的内容。
  • 无法实现UserType、Type、SqlType并将其应用于存储过程
  • 我没找到办法,怎么短路hibernate可以塞进它的纯jdbc调用来做这个。

相反,我能够找到许多线程要求这一点,其中许多用户无法提供的例子,包括从hibernate论坛上的hibernate团队的答案。
我不确定这是否是有效的答案,但根据经验,我会说:不,这在hibernate中不受支持。这是可怕的,因为这可能是必要的/最佳的,经过多年的开发,你被锁定。这种无法/异常复杂的做琐碎的任务应该是使用不同框架的指示。
如果你在这个混乱中,我认为唯一可能的出路是:如果需要的话刷新,并使用spring org. springframework. jdbc. object. StoredProcedure调用stored proc。可悲的是,这可能是唯一的出路。

相关问题