由于设计限制,我需要使用entityManager.createQuery()
API从hibernate调用SP。将此entityManager.createQuery("call xxx(:caseId)")
结果称为“java.lang.IllegalArgumentException: node to traverse cannot be null!
”。我尝试了其他选项,如entityManager.createQuery("call xxx(?1)")
等。导致同样的错误。我错过了什么?我知道错误是非常通用的,并且与某种语法问题有关。
有人能告诉我使用createQuery
调用SP的正确语法吗?
答案 0 :(得分:0)
您可以使用org.hibernate.Session
:
Query query = session.createQuery("CALL xxx(:caseId)").setString("caseId", valueForIt);
注意:如果caseId不是String,请使用相应的set方法。
现在您可以执行query.executeUpdate()
,或者如果您想要返回某些内容(例如列表),您可以执行query.list()
。