如何在Hibernate中调用Oracle函数
我想调用一个Oracle函数来检查用户在我的JavaBean中是否有效。该函数具有以下代码:如何在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
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可以识别。我用数值代替布尔值,现在可以了,谢谢。但这个答案不是一个解决方案