当前位置: 首页 > 知识库问答 >
问题:

使用EclipseLink调用Oracle中具有复杂对象类型参数的存储过程

荀正谊
2023-03-14

由于JPublisher自Oracle12c以来就不受欢迎,我们目前正在考虑其他方法,如何调用具有复杂对象类型作为参数的存储过程,而不是生成的类和JDBC。

似乎EclipseLink JPA扩展是唯一可以帮助它的工具。根据我发现的示例,我可以用简单类型作为参数调用过程。但是我无法注释我的实体类,以便当对象稍微复杂一些时,它们能够正确地映射到数据库中的PL/SQL对象类型。

例如,我们有一个存储过程,它具有相同对象类型a的一个输入和一个输出参数。类型结构如下:

对象类型A包含<-表类型B,它是<-对象类型C的表,它包含<-表类型D,它是<-对象类型E的表。

我想我应该使用@OracleObject来表示对象类型,使用@plsqlTable来表示表类型,但是我还没有找到如何正确地将它们组合在一起的方法。

// All annotations with the required elements

@Embeddable
@Struct
@OracleObject
public class A {
    @Column(name = "B")
    private B b;

    // Getter and setter
}

@Embeddable
@Struct
@PLSQLTable (.., nestedType = "C")
public class B { }

@Embeddable
@Struct
@OracleObject
public class C {}

非常感谢。

共有1个答案

上官自明
2023-03-14

同样的问题。我一直在沿着Spring Data Oracle Extension项目的道路前进。然而,给出的示例是一个简单的pojo,而不是一个复杂的对象
尽管我找不到任何示例,但我能够通过SqlReturnSqlData()拉回一个非常复杂的对象,但似乎找不到将复杂对象插入oracle存储过程的方法。我还没有找到任何人如何插入自定义复杂Oracle类型的完整示例。通过Spring或任何其他方式。

 类似资料:
  • 我需要对一个参数为PL/SQL表的过程进行JDBC调用。我正在尝试结构对象。但是我没有做正确的事情。我得到错误: ORA-04043:对象“斯科特”。“对象列表结构”不存在。 以下是代码片段: 参数“?”对于本程序,类型为: 我们非常感谢任何能让我们成功的见解谢谢

  • 我是Oracle的初学者,我声明了这个对象类型: 我希望在我的存储过程中使用该对象: 但是当编译过程时,我得到了这个错误: 错误(2,14):PLS-00201:必须声明标识符“T1” 我怎样才能写出正确的程序?谢谢大家。

  • 我在HANA数据库中创建了这个存储过程,它使用两个参数,一个是表类型,另一个是。 现在我想在Java中调用这个过程,我写了这样的东西。 有人能告诉我在调用此存储过程时,如何将对象作为参数中的表实体传递吗?

  • 我通过Hibernate调用了一个带有OUT参数的存储过程,得到了以下错误: 我的存储过程: Hibernate映射: 我按如下方式调用了存储过程: 有人能解释一下这段代码有什么问题吗?

  • 我在Oracle中有一个存储过程,如下所示。 我正在从Java调用该过程。我的密码是, 即使我正在获取记录,值也是空的。这意味着如果输出为2行,则while条件执行并打印为空。在SQL Developer中,它工作得很好。提前道谢。

  • 问题内容: 我在SQL Server 2008 R2中有一个Oracle链接服务器。我需要执行Oracle存储过程(在第一个过程中使用输出参数,在第二个过程中使用输入参数): 我没有找到有关此问题的完整文档,只有带有无参数选择/非选择过程的简单示例,并且想知道如何调用这些过程,具有内部select的过程以及具有基本参数类型的多参数过程。 问题答案: 它应该像这样工作: 如果您有几个参数,则可能如下