大虾们:也就是说我在通过客户端调用session bean,然后通过session bean调用entity bean中的查找方法,就是不返回值。客户端调用session bean是正确的,因为可以返回一个调用方法中返回的字符串,我看问题是:session bean 调用entity bean时没成功,这是怎么回事啊?
我看了n多例子,都那么简单!!!!

解决方案 »

  1.   

    我看你的思路没问题啊
    你加了<ejb-ref>了吗
      

  2.   

    我检查了n遍,就是找不倒是什么原因!而且运行时也没有任何错,就是得不到想要的值!
    我通过session bean调用entity bean(cmp)的findByPrimaryKey(String id) throws FinderException方法。
    代码如下:
    public String getname(String id) {
        String name="";
        try{
          ttable=ttablehome.findByPrimaryKey(id);
          name=ttable.getName();
          System.out.println("ttable.getname() is"+name);
        }catch(Exception ex)
          {ex.printStackTrace();}
        return name;
      }
    返回的是个空值,为什么?大虾们,这可困扰我好几天了,只要解决了就结贴!
    再次谢谢!!!!
      

  3.   

    在我的weblogic中有这样的错误信息:
    javax.ejb.FinderException: Problem in findByPrimaryKey while preparing or executing statement: 'weblogic.jdbc.rmi.SerialPreparedStatement@7723ab': java.sql.SQLException: No data foundjava.sql.SQLException: No data found at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:6207) at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3261) at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java:5393) at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:321) at weblogic.jdbc.jts.ResultSet.getString(ResultSet.java:84) at weblogic.jdbc.rmi.internal.ResultSetImpl.getString(ResultSetImpl.java:178) at weblogic.jdbc.rmi.internal.ResultSetStraightReader.getString(ResultSetStraightReader.java:37) at weblogic.jdbc.rmi.SerialResultSet.getString(SerialResultSet.java:128) at lastcmp.TTableBean_txd1ye__WebLogic_CMP_RDBMS.__WL_loadGroup0FromRS(TTableBean_txd1ye__WebLogic_CMP_RDBMS.java:599) at lastcmp.TTableBean_txd1ye__WebLogic_CMP_RDBMS.ejbFindByPrimaryKey(TTableBean_txd1ye__WebLogic_CMP_RDBMS.java:419) at java.lang.reflect.Method.invoke(Native Method) at weblogic.ejb20.cmp.rdbms.RDBMSPersistenceManager.findByPrimaryKey(RDBMSPersistenceManager.java:203) at weblogic.ejb20.manager.BaseEntityManager.findByPrimaryKey(BaseEntityManager.java:500) at weblogic.ejb20.manager.BaseEntityManager.localFindByPrimaryKey(BaseEntityManager.java:457) at weblogic.ejb20.internal.EntityEJBLocalHome.findByPrimaryKey(EntityEJBLocalHome.java:275) at lastcmp.TTableBean_txd1ye_LocalHomeImpl.findByPrimaryKey(TTableBean_txd1ye_LocalHomeImpl.java:101) at lastcmp.testSessionBean.getname(testSessionBean.java:52) at lastcmp.testSessionBean_qc2f8k_EOImpl.getname(testSessionBean_qc2f8k_EOImpl.java:46) at lastcmp.testSessionBean_qc2f8k_EOImpl_WLSkel.invoke(Unknown Source) at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:362) at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:114) at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:313) at weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManager.java:785) at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:308) at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:153) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:134) at lastcmp.TTableBean_txd1ye__WebLogic_CMP_RDBMS.ejbFindByPrimaryKey(TTableBean_txd1ye__WebLogic_CMP_RDBMS.java:443) at java.lang.reflect.Method.invoke(Native Method) at weblogic.ejb20.cmp.rdbms.RDBMSPersistenceManager.findByPrimaryKey(RDBMSPersistenceManager.java:203) at weblogic.ejb20.manager.BaseEntityManager.findByPrimaryKey(BaseEntityManager.java:500) at weblogic.ejb20.manager.BaseEntityManager.localFindByPrimaryKey(BaseEntityManager.java:457) at weblogic.ejb20.internal.EntityEJBLocalHome.findByPrimaryKey(EntityEJBLocalHome.java:275) at lastcmp.TTableBean_txd1ye_LocalHomeImpl.findByPrimaryKey(TTableBean_txd1ye_LocalHomeImpl.java:101) at lastcmp.testSessionBean.getname(testSessionBean.java:52) at lastcmp.testSessionBean_qc2f8k_EOImpl.getname(testSessionBean_qc2f8k_EOImpl.java:46) at lastcmp.testSessionBean_qc2f8k_EOImpl_WLSkel.invoke(Unknown Source) at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:362) at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:114) at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:313) at weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManager.java:785) at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:308) at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:153) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:134)
      

  4.   

    方法没问题,看楼上提供的Weblogic的异常,应该是数据库中不存在PK为id的数据,你可检查一下打出来id看看,比如id是否包含多余的空格,尤其是当数据库中的id字段为定长度的Char型(而不是Varchar型)的时候,从java程序中取出来的会包含一堆多余的空格,容易产生上述问题。
      

  5.   

    我先用的access数据库,然后改用oracle,我的id中有数据啊,怎么就是不行,出现上面的错误提示。高手们救命啊!!!!要不那位好心的人留下联系方式:我将我的程序发给你帮我看看!
    程序很简单,就一个添加和查询函数!用的是JBULIDER7+WBLOGIC7+ACCESS!
      

  6.   

    我用的自动生成的findByPrimaryKey()函数。
    我自己添加一个finder查询函数,可是在添加查询语句时总出错!
    请大厦门指点!
      

  7.   

    我觉得jass说得有道理,我以前开发的时候也遇到过这种情况,不要着急,估计是你的数据的问题,可能是你传入的id和数据库里面的数据不一样,差个空格什么的.
      

  8.   

    为什么要用access呢?建议你先看一下Borland的一个白皮书,其中有例子很详细。你的id是什么类型的(int,String还是其它)??
      

  9.   

    郁闷,我也遇到同样的问题,我把数据库内ID字段所有的多余空格全删除了,可findByPrimaryKey()函数还是出同样的错java.sql.SQLException: No data found,郁闷啊!关注!!!!!!!!!!
      

  10.   

    TO:chenyajun5(chenyajun5) 
    id用的是:String 类型
    我也用过oracle,还是一样的错误提示!
      

  11.   

    应该是空值问题!
    如果数据库用的是SQL Server,类型改成varchar
    如果数据库用的是ORACLE,类型改成varchar2
      

  12.   

    我的oracle中数据根本就没有空格啊!
    而且我用access也是一样的错啊?
    那位大哥能帮我看看我的程序。告诉我你的邮件地址好吗?
    我发给你帮我看看!
    这个问题都快困扰我一周时间了,郁闷啊!!!!!!!呜呜~~~~~~~~~
      

  13.   

    还是这个错啊!!!!!!!!!!!!!!!
    javax.ejb.FinderException: Problem in findByPrimaryKey while preparing or executing statement: 'weblogic.jdbc.rmi.SerialPreparedStatement@7fe5ac': 
    java.sql.SQLException: No data found
    java.sql.SQLException: No data found
      

  14.   

    楼主,我的问题解决了,我认为是驱动的问题,我换了Oracle数据库,用JDBC驱动一切OK!哥们,不要用Sql Server和Access数据库执行CMP的find方法!