#jpa #nativequery
Вопрос:
Мне нужно передать некоторое Clob
значение select
оператору, используя собственный способ запроса, поэтому я не могу использовать здесь сопоставление сущностей.
Это код, который я запускаю:
String strQuery =
"select admin.pkg_ddl.get_table_alterddl(:src, :dst) ddl "
"from dual";
Query query = toptEntityManager.createNativeQuery(strQuery);
query.setParameter("src", srcTable);
query.setParameter("dst", dstTable);
Object obj = query.getSingleResult();
Где toptEntityManager
javax.persistence.EntityManager
Но я получаю ошибку:
select DBMS_METADATA.get_sxml('TABLE', 'EDO_DOC_OUT', 'GLOBALREF', '11.2.0','ORACLE','SXML') as xml from dual
extracted value ([XML] : [CLOB]) - [{clob}]
select admin.pkg_ddl.get_table_alterddl(?, ?) ddl from dual
binding parameter [1] as [VARBINARY] - [oracle.sql.CLOB@415bcbc3]
binding parameter [2] as [VARBINARY] - [oracle.sql.CLOB@2099912e]
SQL Error: 6553, SQLState: 65000
ORA-06553: PLS-306: wrong number or types of arguments in call to 'GET_TABLE_ALTERDDL'
Я могу успешно выполнить этот запрос из SqlDeveloper
:
with t1 as (
select DBMS_METADATA.get_sxml ('TABLE', 'TABLE_SRC', 'ADMIN', '11.2.0','ORACLE','SXML') as xml
from dual
), t2 as (
select DBMS_METADATA.get_sxml ('TABLE', 'TABLE_DST', 'ADMIN', '11.2.0','ORACLE','SXML') as xml
from dual
)
select admin.pkg_ddl.get_table_alterddl(t1.xml, t2.xml) ddl
from t1, t2;
В чем может быть проблема с запросом JPA здесь?