| 发表于:2007-10-16 15:15:27 楼主 |
在oracle10g中写了一个function,利用 @namednativequery(name = "adduser ", query = "{call adduser(:pportalid,:ploginid,:ploginpasswd,:pselfquiz,:pselfanswer,:puseremail)} ", hints = { @queryhint(name = "org.hibernate.callable ", value = "true ") }, resultclass = user.class) 来调用函数adduser,但是在运行时总是提示: javax.persistence.persistenceexception: org.hibernate.exception.sqlgrammarexception: could not EXECute query at org.hibernate.ejb.abstractentitymanagerimpl.throwpersistenceexception(abstractentitymanagerimpl.java:630) at org.hibernate.ejb.queryimpl.getsingleresult(queryimpl.java:108) at com.igrs.sso.dao.impl.userdaoimpl.adduser(userdaoimpl.java:59) at com.igrs.sso.service.impl.userserviceimpl.adduser(userserviceimpl.java:41) at com.igrs.sso.page.signupform.submit(signupform.java:172) at sun.reflect.nativemethodaccessorimpl.invoke0(native method) at sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:39) at sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:25) at java.lang.reflect.method.invoke(method.java:597) at org.apache.tapestry.listener.listenermethodinvokerimpl.invoketargetmethod(listenermethodinvokerimpl.java:276) at org.apache.tapestry.listener.listenermethodinvokerimpl.invokelistenermethod(listenermethodinvokerimpl.java:221) .........省略 ... 58 more caused by: java.sql.sqlexception: ora-06550: line 1, column 7: pls-00221: 'adduser ' is not a procedure or is undefined ora-06550: line 1, column 7: pl/sql: statement ignored at oracle.jdbc.driver.databaseerror.throwsqlexception(databaseerror.java:112) at oracle.jdbc.driver.t4cttioer.processerror(t4cttioer.java:331) at oracle.jdbc.driver.t4cttioer.processerror(t4cttioer.java:288) at oracle.jdbc.driver.t4c8oall.receive(t4c8oall.java:743) ......省略 ,请问这是怎么回事?难道只能调用存储过程而不能调用函数吗? |
|
|
|
|