Я хочу вызвать функцию Oracle с помощью JPA. Я нашел this thread на эту тему.Как вызвать функцию Oracle, которая возвращает строку, используя Hibernate/JPA?
Но моя функция Oracle возвращает только строку. Не результат для какой-то сущности. Я пытался что-то вроде этого:
@NamedNativeQuery(name = "myFuncCall",
resultSetMapping = "myResultSetMapping",
query = "{ ? = call schema.mypkg.somefunc(:id) }",
hints = { @javax.persistence.QueryHint(name = "org.hibernate.callable", value = "true") }
)
@SqlResultSetMapping(name = "myResultSetMapping",
columns = { @ColumnResult(name="somename") }
)
Когда я звоню запрос как этот
Query query = em.createNamedQuery("myFuncCall", String.class).setParameter("id", "42");
String res = (String) query.getSingleResult();
я
Hibernate: { ? = call schema.somefunc(?) }
18:21:11.222 [main] WARN o.h.util.JDBCExceptionReporter - SQL Error: 6550, SQLState: 65000
18:21:11.222 [main] ERROR o.h.util.JDBCExceptionReporter - ORA-06550: Row 1, Column 13:
PLS-00382: This expression has the wrong type
ORA-06550: Row 1, Column 7:
PL/SQL: Statement ignored
javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute query
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1389)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1317)
at org.hibernate.ejb.QueryImpl.getSingleResult(QueryImpl.java:307)
Любые идеи?
Вы когда-нибудь нашли что-нибудь хорошее для этого, я взломал все вместе вместе – NimChimpsky
Нет, это все равно то же самое, что и ниже, к сожалению. – Stefan