jbosscmp-jdbc.xml
<?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'>
<jbosscmp-jdbc>
    <defaults>
        <datasource>java:/mysqlds</datasource>
        <datasource-mapping>Hypersonic SQL</datasource-mapping>
    </defaults>
    <enterprise-beans>
        <entity>
            <ejb-name>CMPSportsBean</ejb-name>
    <create-table>false</create-table>
            <table-name>sportsteams</table-name>
    
            <cmp-field>
                <field-name>sport</field-name>
                <column-name>SPORT</column-name>
<not-null/>
            </cmp-field>
            <cmp-field>
                <field-name>nickName</field-name>
                <column-name>NICKNAME</column-name>
<not-null/>
            </cmp-field>
            <cmp-field>
                <field-name>ownerName</field-name>
                <column-name>OWNERNAME</column-name>
            </cmp-field>
            <cmp-field>
                <field-name>franchisePlayer</field-name>
                <column-name>FRANCHISEPLAYER</column-name>
            </cmp-field>
        </entity>
        <entity>
            <ejb-name>CMPPlayerBean</ejb-name>
    <create-table>false</create-table>
            <table-name>player</table-name>
    
            <cmp-field>
                <field-name>name</field-name>
                <column-name>name</column-name>
<not-null/>
            </cmp-field>
            <cmp-field>
                <field-name>nickName</field-name>
                <column-name>NICKNAME</column-name>
<not-null/>
            </cmp-field>
        </entity>
    </enterprise-beans>
    <relationships>
        <ejb-relation>
            <ejb-relation-name>sportsteams-plays</ejb-relation-name>
            <foreign-key-mapping />
            <ejb-relationship-role>
                <ejb-relationship-role-name>SportsTeamsRelationshipRole</ejb-relationship-role-name>
                <key-fields>
<key-field>
<field-name>name</field-name>
<column-name>NAME</column-name>
</key-field>
</key-fields>
            </ejb-relationship-role>
            <ejb-relationship-role>
                <ejb-relationship-role-name>PlayersRelationshipRole</ejb-relationship-role-name>
                <key-fields />
            </ejb-relationship-role>
        </ejb-relation>
    </relationships>
</jbosscmp-jdbc>

解决方案 »

  1.   

    ejb-jar.xml
    <!DOCTYPE ejb-jar 
        PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" 
               "http://java.sun.com/dtd/ejb-jar_2_0.dtd"><ejb-jar>
      <enterprise-beans>
        <entity>
          <ejb-name>CMPSportsBean</ejb-name>
          <home>sportBean.cmp.SportTeamHome</home>
          <remote>sportBean.cmp.SportTeam</remote>
          <ejb-class>sportBean.cmp.SportTeamEJB</ejb-class>
          <persistence-type>Container</persistence-type>
          <prim-key-class>sportBean.cmp.SportTeamPK</prim-key-class>
          <reentrant>False</reentrant>
          <cmp-version>2.x</cmp-version>
          <abstract-schema-name>SportEJB</abstract-schema-name>
          <cmp-field><field-name>sport</field-name></cmp-field>
          <cmp-field><field-name>nickName</field-name></cmp-field>
          <cmp-field><field-name>ownerName</field-name></cmp-field>
          <cmp-field><field-name>franchisePlayer</field-name></cmp-field>      <query>
            <query-method>
              <method-name>findByOwnerName</method-name>
              <method-params>
                <method-param>java.lang.String</method-param>
              </method-params>
            </query-method>
            <ejb-ql>
              <![CDATA[SELECT OBJECT(o) FROM SportEJB AS o WHERE o.ownerName = ?1]]>
            </ejb-ql>
          </query>
          <query>
            <query-method>
              <method-name>findByNickName</method-name>
              <method-params>
                <method-param>java.lang.String</method-param>
              </method-params>
            </query-method>
            <ejb-ql>
              <![CDATA[SELECT OBJECT(o) FROM SportEJB AS o WHERE o.nickName = ?1]]>
            </ejb-ql>
          </query>     
        </entity>
    <entity>
          <ejb-name>CMPPlayerBean</ejb-name>
          <home>sportBean.cmp.PlayerHome</home>
          <remote>sportBean.cmp.Player</remote>
          <ejb-class>sportBean.cmp.PlayerBean</ejb-class>
          <persistence-type>Container</persistence-type>
          <prim-key-class>java.lang.String</prim-key-class>
          <reentrant>False</reentrant>
          <cmp-version>2.x</cmp-version>
          <abstract-schema-name>PlayerEJB</abstract-schema-name>
          <cmp-field><field-name>name</field-name></cmp-field>
          <cmp-field><field-name>nickName</field-name></cmp-field>  
          <primkey-field>name</primkey-field>
          <query>
            <query-method>
              <method-name>findByNickName</method-name>
              <method-params>
                <method-param>java.lang.String</method-param>
              </method-params>
            </query-method>
            <ejb-ql>
              <![CDATA[SELECT OBJECT(o) FROM PlayerEJB AS o WHERE o.nickName = ?1]]>
            </ejb-ql>
          </query>
        </entity>
    <!--
        <entity>
          <ejb-name>BMPSportsBean</ejb-name>
          <home>sportBean.bmp.SportTeamHome</home>
          <remote>sportBean.bmp.SportTeam</remote>
          <ejb-class>sportBean.bmp.SportTeamEJB</ejb-class>
          <persistence-type>Bean</persistence-type>
          <prim-key-class>sportBean.bmp.SportTeamPK</prim-key-class>
          <reentrant>False</reentrant>
          <resource-ref>
            <res-ref-name>jdbc/sportsJDBC</res-ref-name>
            <res-type>javax.sql.DataSource</res-type>
            <res-auth>Container</res-auth>
          </resource-ref>
        </entity>
        
        <relationships>
    <ejb-relation>
    <ejb-relation-name>sportsteams-plays</ejb-relation-name>
    <ejb-relationship-role>
    <description>sportsteams</description>
    <ejb-relationship-role-name>SportsTeamsRelationshipRole</ejb-relationship-role-name>
    <multiplicity>One</multiplicity>
    <relationship-role-source>
    <description>sportsteams</description>
    <ejb-name>CMPSportsBean</ejb-name>
    </relationship-role-source>
    <cmr-field>
    <description>players</description>
    <cmr-field-name>players</cmr-field-name>
    <cmr-field-type>java.util.Collection</cmr-field-type>
    </cmr-field>
    </ejb-relationship-role>
    <ejb-relationship-role>
    <description>players</description>
    <ejb-relationship-role-name>PlayersRelationshipRole</ejb-relationship-role-name>
    <multiplicity>Many</multiplicity>
    <relationship-role-source>
    <description>players</description>
    <ejb-name>CMPPlayerBean</ejb-name>
    </relationship-role-source>
    </ejb-relationship-role>
    </ejb-relation>
    </relationships>
    -->
      </enterprise-beans>
      
      <assembly-descriptor>
        <container-transaction>
          <method>
            <ejb-name>CMPSportsBean</ejb-name>
            <method-name>*</method-name>
          </method>
          <trans-attribute>Required</trans-attribute>
        </container-transaction>
        <container-transaction>
          <method>
            <ejb-name>CMPPlayerBean</ejb-name>
            <method-name>*</method-name>
          </method>
          <trans-attribute>Required</trans-attribute>
        </container-transaction>
    <!--
        <container-transaction>
          <method>
            <ejb-name>BMPSportsBean</ejb-name>
            <method-name>*</method-name>
          </method>
          <trans-attribute>Required</trans-attribute>
        </container-transaction>
    -->
      </assembly-descriptor>
    </ejb-jar>
      

  2.   

    但是我没有用关系的时候测试过两个ejb,是没有问题的阿!
      

  3.   

    查看conf目录下面的两个大xml文件, mysql映射有专门的名字        <datasource>java:/mysqlds</datasource>
            <datasource-mapping>Hypersonic SQL</da。。
    这是用mysql数据源,映射用hypersonicsql的不匹配啊