【发布时间】:2012-02-26 02:27:11
【问题描述】:
我正在尝试做一件简单的事情:调用具有对象类型参数的存储过程。
这是我在 db 中的:
create or replace
TYPE TEST_TYPE AS OBJECT
(
test_field varchar(100)
)
和
CREATE OR REPLACE PROCEDURE TEST_PROC
(
PARAM1 IN TEST_TYPE
) AS
BEGIN
END TEST_PROC;
这是我的 java 代码中的内容:
@Embeddable
@Struct(name = "TEST_TYPE", fields = {"TEST_FIELD"})
public class TestStruct
{
private String testField;
public String getTestField() {
return testField;
}
public void setTestField(String testField) {
this.testField = testField;
}
}
和
@PostConstruct
public void init()
{
StoredProcedureCall call = new StoredProcedureCall();
call.setProcedureName("TEST_PROC");
call.addNamedArgument("PARAM1", "PARAM1", Types.STRUCT, "TEST_TYPE", TestStruct.class);
DataReadQuery dataReadQuery = new DataReadQuery(call);
dataReadQuery.addArgument("PARAM1");
TestStruct testStruct = new TestStruct();
List args = new ArrayList();
args.add(testStruct);
Object result = ((EntityManagerImpl)em.getDelegate()).getSession().executeQuery(dataReadQuery,args);
}
这是我在运行时得到的:
Internal Exception: java.sql.SQLException: Invalid column type
Error Code: 17004
Call: BEGIN TEST_PROC(PARAM1=>?); END;
bind => [1 parameter bound]
Query: DataReadQuery()
我想我完全不明白 JPA 的使用结构的主题
请帮助我,好人:)
实现此功能的最短方法是什么?
【问题讨论】:
标签: java oracle stored-procedures eclipselink