try
    {
              Collection orders = getTAppDesc();
              Iterator it = orders.iterator();
              while(it.hasNext())
              {
                TAppDesc order = (TAppDesc)it.next();
                result.add(order.getAppid());
              }
    }
--------->    try
    {
              Collection orders = getTAppDesc();
              Iterator it = orders.iterator();
              while(it.hasNext())
              {
                TAppDesc order = new TAppDesc();  //这样
                order = (TAppDesc)it.next();      //试试看
                result.add(order.getAppid());
              }
    }

解决方案 »

  1.   

    这样不行的
    TAppDesc order = new TAppDesc();  //这样
    order = (TAppDesc)it.next();      //试试看会报接口是抽象的,不能用new  方法我怀疑是数据有问题,我的数据不是实体bean添加的,是以前就有的
      

  2.   

    不应该是数据问题的,实体bean添加的数据,和以前的数据应该一样!~!
    你看看emp.getALLAPPID(subsysport);
    执行的SQL语句对不对呀!
    然后查查,那里开始是1条了!
      

  3.   

    对了,就是怎么看实体Bean内部自己生成的sql啊?
    这个我也不会,麻烦给出详细办法吧
      

  4.   

    TSubsysInfoHome home = (TSubsysInfoHome)ctx.lookup("TSubsysInfo");
           TSubsysInfo emp = home.findByPrimaryKey(subsysport);
           result=emp.getALLAPPID(subsysport);
    这个地方好怪呀!
    public java.util.Vector getALLAPPID() {
    你用result=emp.getALLAPPID(subsysport);
    能调?
    而且
    你已经调了home.findByPrimaryKey(subsysport);得到了一个一条纪录的EntityBean
    你再调result=emp.getALLAPPID(subsysport);有点问题吧!
    搂主,帮我讲讲,恕小弟愚笨,对EntityBean的原理一巧不通!
      

  5.   

    你能不能把你的EntityBean所有的代码贴出来!
      

  6.   

    我其实是两个EntityBean
    TSubsysInfo(主表)  和 TAppInfo(从表)  这两个实体Bean是1:N的关系getALLAPPID方法的参数应该是没有的,我贴出来时写错了,不过结果还是那样我调用的逻辑是先通过subsysport找到主表的一个实例,然后在主表的实体Bean中使用方法getALLAPPID得到多个从表得实例
    代码没有什么了,都是自动生成的,都贴出来看着还晕最后问一下怎么查询CMP实体bean的内部sql啊???
      

  7.   

    加在哪里啊?我根本就没有sql,CMP实体bean啊!!
      

  8.   

    老大!你做程序,連自己用的SQL都找不到!還說什麽編程!你以爲EJB是萬能的呀!如果你是做工程的話,你不可能不設計SQL的,如果你只是學EJB的話,你還是寫一個最小的EJB看看,就知道了!
    EntityBean最後還是要寫SQL的
      

  9.   

    不用吧
    BMP才要写sql,CMP是容器管理的,不用写sql,很多资料都是如此啊
    大哥,你到底会不会EntityBean?
      

  10.   

    呵呵!我不會EntityBean!我從來都沒有說過我會!哈哈
    CMP是由容器管理EJB之間的關係,這個我知道,但是最基本的一點就是EJB也要執行SQL語句!
    你只要在每個EJB執行之前,把他執行的SQL語句打出來,就知道EJB到底做了什麽!
    自己的SQL語句都找不到,你不知道TSubsysInfo(主表)  和 TAppInfo(从表)各執行了幾次,怎麽幫你!基本的東西都沒有學好,只會用JB生成幾個EJB,就自己覺得自己很懂了。咳,現在這種人太多了!
      

  11.   

    你找到EntityBean的ejbFindByPrimaryKey方法!再往下找一定能找到SQL!
      

  12.   

    Up Pasp的。BMP的所有SQL是自己的。
    CMP的除了自己增加的finder/select方法的ql是自己写的之外,
    其它的都是由EJBContainer管理的,管理的也只是ejb ql,真正
    由ejb ql 到sql的转换可能与不同的J2EE Server有关了!
      

  13.   

    又发生了怪事!!
    第一我刚才用实体Bean新增记录,没报任何错,成功!
    然后我用sqlplus查,竟然没有
    我再次用实体bean增加记录,还是那个关键字的,竟然报错,说已经存在了!!!
    已经反复确认数据库帐号,就是一个的
    我考!!!!
      

  14.   

    插入以后commit没
    没报错不等于成功插入。。
      

  15.   

    这个问题刚解决了
    原来是从表的Entity Bean有问题,主键应该是两个字段,我只设了一个,现在好了
    不过Jboss的还有问题,我的jbosscmp-jdbc.xml用Jbuilder8自动写不进去以下内容
    我的jbosscmp-jdbc.xml内容如下 ,好像少了jdbc的JNDI名
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE jbosscmp-jdbc PUBLIC '-//JBoss//DTD JBOSSCMP-JDBC 3.0//EN' 'http://www.jboss.org/j2ee/dtd/jbosscmp-jdbc_3_0.dtd'>
    <!--
    Generated by JBoss OpenTool 2.0 for JBoss Server 3.x** DO NOT MAKE MANUAL MODIFICATIONS TO THIS FILE **
    This deployment descriptor will be regenerated every time changes are made in the EJB designer.Features specific to jbosscmp-jdbc.xml you may be interested in:
    (For general features see comments in jboss.xml).
    - An additional JBoss property page is provided for each entity bean node under the EJB desginer
      node in the project.
    - The 'defaults' node in jbosscmp-jdbc.xml will have a 'datasource' specified if within
      your EJB desginer node at least one entity bean specifies a 'datasource' and no two entity
      beans specify conflicting 'datasource' values. If conflicting values are specified or if no
      value is specified for any entity bean, the 'datasource' element will not be added to the
      'defaults' node in jbosscmp-jdbc.xml.
    - The same is true for 'datasource-mapping'.
    - Table names and column names specified for entity beans in the EJB designer are propagated
      to jbosscmp-jdbc.xml, overriding the default SQL names generated by the JBoss server.
    - Column names specified for container manager relationships in the EJB designer are propagated
      to jbosscmp-jdbc.xml, overriding the default SQL names generated by the JBoss server.
      Note that you must specify a cross table for many-to-many relationships.-->
    <jbosscmp-jdbc>
        <defaults>
            <datasource>java:/java:/Mbuser</datasource>
            <datasource-mapping>Mbuser</datasource-mapping>
            <create-table>true</create-table>
            <remove-table>true</remove-table>
        </defaults>
        <enterprise-beans>
            <entity>
                <ejb-name>TAppDesc</ejb-name>
                <table-name>T_APP_DESC</table-name>
                <cmp-field>
                    <field-name>subsysport</field-name>
                    <column-name>SUBSYSPORT</column-name>
                </cmp-field>
                <cmp-field>
                    <field-name>appid</field-name>
                    <column-name>APPID</column-name>
                </cmp-field>
                <cmp-field>
                    <field-name>appname</field-name>
                    <column-name>APPNAME</column-name>
                </cmp-field>
                <cmp-field>
                    <field-name>element</field-name>
                    <column-name>ELEMENT</column-name>
                </cmp-field>
                <cmp-field>
                    <field-name>havephoto</field-name>
                    <column-name>HAVEPHOTO</column-name>
                </cmp-field>
                <cmp-field>
                    <field-name>pagesize</field-name>
                    <column-name>PAGESIZE</column-name>
                </cmp-field>
            </entity>
            <entity>
                <ejb-name>TSubsysInfo</ejb-name>
                <table-name>T_SUBSYS_INFO</table-name>
                <cmp-field>
                    <field-name>subsysport</field-name>
                    <column-name>SUBSYSPORT</column-name>
                </cmp-field>
                <cmp-field>
                    <field-name>subsysdesc</field-name>
                    <column-name>SUBSYSDESC</column-name>
                </cmp-field>
                <cmp-field>
                    <field-name>cfgversion</field-name>
                    <column-name>CFGVERSION</column-name>
                </cmp-field>
                <cmp-field>
                    <field-name>cfgdata</field-name>
                    <column-name>CFGDATA</column-name>
                </cmp-field>
                <cmp-field>
                    <field-name>maxremain</field-name>
                    <column-name>MAXREMAIN</column-name>
                </cmp-field>
            </entity>
        </enterprise-beans>
        <relationships>
            <ejb-relation>
                <ejb-relation-name>tSubsysInfo-tAppDesc</ejb-relation-name>
                <foreign-key-mapping />
                <ejb-relationship-role>
                    <ejb-relationship-role-name>TSubsysInfoRelationshipRole</ejb-relationship-role-name>
                    <key-fields>
                        <key-field>
                            <field-name>subsysport</field-name>
                            <column-name>SUBSYSPORT</column-name>
                        </key-field>
                    </key-fields>
                </ejb-relationship-role>
                <ejb-relationship-role>
                    <ejb-relationship-role-name>TAppDescRelationshipRole</ejb-relationship-role-name>
                </ejb-relationship-role>
            </ejb-relation>
        </relationships>
    </jbosscmp-jdbc>