您的位置:程序门 -> java -> j2ee / ejb / jms



 利用jpa的annotation能不能调用oracle中的函数?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


利用jpa的annotation能不能调用oracle中的函数?
发表于: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)  
  ......省略

,请问这是怎么回事?难道只能调用存储过程而不能调用函数吗?  


快速检索

最新资讯
热门点击