如何在Hibernate中调用Oracle函数

时间:2014-08-17 08:36:43

标签: oracle hibernate jpa

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

  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执行该功能的指南。提前谢谢!

1 个答案:

答案 0 :(得分:1)

试试这个: -

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