JPA-调用不带IN参数的Oracle函数

问题描述

我正在尝试执行没有任何IN参数的Oracle函数:

FUNCTION SELECT_USER RETURN SYS_REFCURSOR IS
 refCurRetour SYS_REFCURSOR;
BEGIN
    OPEN refCurRetour FOR
    SELECT ID_RH,NOM,PRENOM,MAIL FROM ES_UTILISATEUR;
    RETURN refCurRetour;
         EXCEPTION
        WHEN NO_DATA_FOUND THEN
         NULL;
         WHEN OTHERS THEN
                RAISE;
END SELECT_USER;

我定义的实体:

@Entity
@NamedNativeQuery(
        name = "selectUser",query = "{? = call SELECT_USER()}",resultClass = UserResult.class
)
public class UserResult {
    @Id
    @Column(name = "ID_RH")
    private String idrh;

    @Column(name = "NOM")
    private String nom;

    @Column(name = "PRENOM")
    private String prenom;

    @Column(name = "MAIL")
    private String mail;
}

并执行查询:

    public List<UserResult> selectUser() {
        TypedQuery<UserResult> q = em.createNamedQuery("selectUser",UserResult.class);
        return q.getResultList();
    }

问题是我收到有关未定义参数的错误:

java.sql.SQLException: Missing IN or OUT parameter at index :: 1

我在做什么错了?

解决方法

似乎我正在使用@NamedNativeQuery软件包中的javax.persistence

当我将其更改为org.hibernate.annotations(+添加calleble = true)时,问题已解决。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...