如何在Hibernate中调用Oracle函数

如何在Hibernate中调用Oracle函数,oracle,hibernate,jpa,Oracle,Hibernate,Jpa,我想调用一个Oracle函数来检查用户在我的JavaBean中是否有效。该函数具有以下代码: FUNCTION valid_user1(p_username IN VARCHAR2, p_password IN VARCHAR2) RETURN BOOLEAN AS v_dummy VARCHAR2(1); BEGIN BEGIN SELECT '1' INTO v_dummy FROM t_user WH

我想调用一个Oracle函数来检查用户在我的JavaBean中是否有效。该函数具有以下代码:

  FUNCTION valid_user1(p_username IN VARCHAR2, p_password IN VARCHAR2)
    RETURN BOOLEAN AS
    v_dummy VARCHAR2(1);
  BEGIN
    BEGIN
      SELECT '1'
        INTO v_dummy
        FROM t_user
       WHERE username = UPPER(p_username)
         AND password = get_hash(p_username, p_password);
    EXCEPTION
      WHEN NO_DATA_FOUND THEN
        RAISE_APPLICATION_ERROR(-20000,
                                'Invalid username/pass!');
    END;
    RETURN TRUE;
  EXCEPTION
    WHEN OTHERS THEN
      RETURN FALSE;
  END;
END;
我从未在Hibernate中调用过函数,我不知道如何继续。我读了一些文章,其中写道使用过程比使用函数更好,但我不明白为什么。请给我一些如何使用EntityManager执行函数的指导。提前谢谢

试试这个:-

 Boolean valid = (Boolean)entityManager.createNativeQuery("SELECT valid_user1(?1,?2) FROM DUAL")
                          .setParameter(1, userName)
                          .setParameter(2, pwd)
                          .getSingleResult();

这可能会对您有所帮助。谢谢,我发现了问题。警告:{loginBean.login(loginBean.name,loginBean.password)}:javax.persistence.PersistenceException:org.hibernate.exception.sqlgrammareexception:无法提取结果集javax.faces.faces异常:{loginBean.login(loginBean.name,loginBean.password)}:javax.persistence.PersistenceException:org.hibernate.exception.sqlgrammareexception:无法提取结果设置问题源于纯SQL无法识别布尔类型,尽管PL/SQL可以识别。我用数值代替布尔值,现在可以了,谢谢。但这个答案不是一个解决方案