在Oracle数据库中,我定义了类型:
create or replace TYPE person_type
AS OBJECT (id NUMBER(10), name VARCHAR2(50), age NUMBER);
和存储过程
create or replace PROCEDURE add_person (in_person IN person_type)
AS
BEGIN
INSERT into person (id, name, age) VALUES(in_person.id, in_person.name, person.age);
END;
我正在使用带有Hibernate的Spring Boot,我想用一些等效的java bean作为输入参数来调用该过程。 我见过很多例子,但他们只使用基本类型,而不是组合对象。 还有一些使用Table注释的示例,但我不保证在数据库中有这样的表,我只保证存储过程类型。
答案 0 :(得分:0)
您需要StructDescriptor
来获取SQL结构化对象,然后需要传递给STRUCT
来创建类型。
在require 'yaml'
# this should be the value of bucket if you don't inspect it
array = YAML.load("---\n- something something\n")
# => ["something something"]
array.join(' ') # or first or join with whatever else, deal with it how you want
# => "something something"
中,您需要传递SQL对象名称,即StructDescriptor
和连接对象,即PERSON_TYPE
。
con
然后,将结构描述符和对象数组传递给struct。请注意,数组索引表示它的序列/位置,它在SQL对象上声明它(SQL对象)的方式。由于StructDescriptor StructDesc = StructDescriptor.createDescriptor("PERSON_TYPE", con);
是第一个,然后是id
,然后是name
。
age
现在,使用struct对象,您可以调用您的过程
Object[] ObjArray = new Object[3];
ObjArray[0] = 1;
ObjArray[1] = "My Name";
ObjArray[2] = 23;
STRUCT structObj = new STRUCT(StructDesc, con, ObjArray);