我的数据库是SQLServer2005,服务器是Weblogic10.3,在用XDoclet做一个主键自增的CMP的实体Bean报如下异常:weblogic-cmp-rdbms-jar.xml配置文件里也做了正确的配置,SQLServer常用的两种主键自增的方式都试过了,还是报同样的错误!
重载的ejbCreate方法:/**
* @ejb.create-method
*/
public Integer ejbCreate(String usrName, Integer usrAge)
throws CreateException {
setUsrName(usrName);
setUsrAge(usrAge);
return new Integer(0);
} //其中Integer usrID是主键自增成员
重载的ejbPostCreate方法:public void ejbPostCreate(String usrName, Integer usrAge) throws CreateException {
}======================================================================================
配置文件:ejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?><!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 > <description><![CDATA[No Description.]]></description>
<display-name>Generated by XDoclet</display-name>
<enterprise-beans>
<entity >
<description><![CDATA[Description for User]]></description>
<display-name>Name for User</display-name>
<ejb-name>User</ejb-name>
<home>pk.interfaces.UserHome</home>
<remote>pk.interfaces.User</remote>
<ejb-class>pk.ejb.UserCMP</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>java.lang.Integer</prim-key-class>
<reentrant>False</reentrant>
<cmp-version>2.x</cmp-version>
<abstract-schema-name>User</abstract-schema-name>
<cmp-field >
<description><![CDATA[]]></description>
<field-name>usrID</field-name>
</cmp-field>
<cmp-field >
<description><![CDATA[]]></description>
<field-name>usrName</field-name>
</cmp-field>
<cmp-field >
<description><![CDATA[]]></description>
<field-name>usrAge</field-name>
</cmp-field>
<primkey-field>usrID</primkey-field>
</entity>
</enterprise-beans>
<assembly-descriptor >
<container-transaction>
<method>
<ejb-name>User</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
=======================================================================================
配置文件:weblogic-cmp-rdbms-jar.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE weblogic-rdbms-jar PUBLIC "-//BEA Systems, Inc.//DTD WebLogic 6.0.0 EJB RDBMS Persistence//EN" "http://www.bea.com/servers/wls600/dtd/weblogic-rdbms20-persistence-600.dtd">
<weblogic-rdbms-jar>
<weblogic-rdbms-bean>
<ejb-name>User</ejb-name>
<data-source-name>jndi/myds</data-source-name>
<table-name>users</table-name>
<field-map>
<cmp-field>usrID</cmp-field>
<dbms-column>usr_ID</dbms-column>
</field-map>
<field-map>
<cmp-field>usrName</cmp-field>
<dbms-column>usr_Name</dbms-column>
</field-map>
<field-map>
<cmp-field>usrAge</cmp-field>
<dbms-column>usr_Age</dbms-column>
</field-map>
<automatic-key-generation>
<generator-type>SQLServer</generator-type>
</automatic-key-generation>
</weblogic-rdbms-bean>
<create-default-dbms-tables>True</create-default-dbms-tables>
</weblogic-rdbms-jar>
================================================================================
配置文件:weblogic-ejb-jar.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE weblogic-ejb-jar PUBLIC "-//BEA Systems, Inc.//DTD WebLogic 6.0.0 EJB//EN" "http://www.bea.com/servers/wls600/dtd/weblogic-ejb-jar.dtd"><weblogic-ejb-jar>
<description><![CDATA[Generated by XDoclet]]></description>
<weblogic-enterprise-bean>
<ejb-name>User</ejb-name>
<entity-descriptor>
<persistence>
<persistence-type>
<type-identifier>WebLogic_CMP_RDBMS</type-identifier>
<type-version>7.0</type-version>
<type-storage>META-INF/weblogic-cmp-rdbms-jar.xml</type-storage>
</persistence-type>
<persistence-use>
<type-identifier>WebLogic_CMP_RDBMS</type-identifier>
<type-version>7.0</type-version>
</persistence-use>
</persistence>
</entity-descriptor>
<reference-descriptor>
</reference-descriptor> <jndi-name>ejb/User</jndi-name>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>
===============================================================
其中要是把CMP的主键的自增去掉,改为自己Set的,程序可以正常运行,但是一用自增就报异常!!
重载的ejbCreate方法:/**
* @ejb.create-method
*/
public Integer ejbCreate(String usrName, Integer usrAge)
throws CreateException {
setUsrName(usrName);
setUsrAge(usrAge);
return new Integer(0);
} //其中Integer usrID是主键自增成员
重载的ejbPostCreate方法:public void ejbPostCreate(String usrName, Integer usrAge) throws CreateException {
}======================================================================================
配置文件:ejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?><!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 > <description><![CDATA[No Description.]]></description>
<display-name>Generated by XDoclet</display-name>
<enterprise-beans>
<entity >
<description><![CDATA[Description for User]]></description>
<display-name>Name for User</display-name>
<ejb-name>User</ejb-name>
<home>pk.interfaces.UserHome</home>
<remote>pk.interfaces.User</remote>
<ejb-class>pk.ejb.UserCMP</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>java.lang.Integer</prim-key-class>
<reentrant>False</reentrant>
<cmp-version>2.x</cmp-version>
<abstract-schema-name>User</abstract-schema-name>
<cmp-field >
<description><![CDATA[]]></description>
<field-name>usrID</field-name>
</cmp-field>
<cmp-field >
<description><![CDATA[]]></description>
<field-name>usrName</field-name>
</cmp-field>
<cmp-field >
<description><![CDATA[]]></description>
<field-name>usrAge</field-name>
</cmp-field>
<primkey-field>usrID</primkey-field>
</entity>
</enterprise-beans>
<assembly-descriptor >
<container-transaction>
<method>
<ejb-name>User</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
=======================================================================================
配置文件:weblogic-cmp-rdbms-jar.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE weblogic-rdbms-jar PUBLIC "-//BEA Systems, Inc.//DTD WebLogic 6.0.0 EJB RDBMS Persistence//EN" "http://www.bea.com/servers/wls600/dtd/weblogic-rdbms20-persistence-600.dtd">
<weblogic-rdbms-jar>
<weblogic-rdbms-bean>
<ejb-name>User</ejb-name>
<data-source-name>jndi/myds</data-source-name>
<table-name>users</table-name>
<field-map>
<cmp-field>usrID</cmp-field>
<dbms-column>usr_ID</dbms-column>
</field-map>
<field-map>
<cmp-field>usrName</cmp-field>
<dbms-column>usr_Name</dbms-column>
</field-map>
<field-map>
<cmp-field>usrAge</cmp-field>
<dbms-column>usr_Age</dbms-column>
</field-map>
<automatic-key-generation>
<generator-type>SQLServer</generator-type>
</automatic-key-generation>
</weblogic-rdbms-bean>
<create-default-dbms-tables>True</create-default-dbms-tables>
</weblogic-rdbms-jar>
================================================================================
配置文件:weblogic-ejb-jar.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE weblogic-ejb-jar PUBLIC "-//BEA Systems, Inc.//DTD WebLogic 6.0.0 EJB//EN" "http://www.bea.com/servers/wls600/dtd/weblogic-ejb-jar.dtd"><weblogic-ejb-jar>
<description><![CDATA[Generated by XDoclet]]></description>
<weblogic-enterprise-bean>
<ejb-name>User</ejb-name>
<entity-descriptor>
<persistence>
<persistence-type>
<type-identifier>WebLogic_CMP_RDBMS</type-identifier>
<type-version>7.0</type-version>
<type-storage>META-INF/weblogic-cmp-rdbms-jar.xml</type-storage>
</persistence-type>
<persistence-use>
<type-identifier>WebLogic_CMP_RDBMS</type-identifier>
<type-version>7.0</type-version>
</persistence-use>
</persistence>
</entity-descriptor>
<reference-descriptor>
</reference-descriptor> <jndi-name>ejb/User</jndi-name>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>
===============================================================
其中要是把CMP的主键的自增去掉,改为自己Set的,程序可以正常运行,但是一用自增就报异常!!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货