Hi everybody, I have question concerning compound primary keys in CMP2.0 EJBs. I've got a deployment error: "Generation only supported with single PK field" from Jboss 3.2.2 (See below). What do I do wrong? Do I need to configure someting in JBoss in addition? My codes and xml-pieces for a vey simple test-bean ("A") with corresponding DB table ("a") are listed below.
I appreciate any help. Thanks, Evert Bende PS: The PK-class was generated by Borland JBuilderX. My table is stored in a MySQL database. None of the pks in table "a" are auto-incremented. I also tried it with a create statement with a single argument, like ejbCreate(APK apk){...}, but this didn't work out either. ////////////////////////////////////////// Deployment Error from JBOSS-3.2.2 ////////////////////////////////////////// 2004-03-04 11:37:08,501 ERROR [org.jboss.ejb.EntityContainer] Starting failed org.jboss.deployment.DeploymentException: Generation only supported with single PK field at org.jboss.ejb.plugins.cmp.jdbc.JDBCAbstractCreateCommand.getGeneratedPKField(JDBCAbstractCreateCommand.java:171) at org.jboss.ejb.plugins.cmp.jdbc.JDBCIdentityColumnCreateCommand.initGeneratedFields(JDBCIdentityColumnCreateCommand.java:46) at org.jboss.ejb.plugins.cmp.jdbc.JDBCAbstractCreateCommand.init(JDBCAbstractCreateCommand.java:91) at org.jboss.ejb.plugins.cmp.jdbc.keygen.JDBCMySQLCreateCommand.init(JDBCMySQLCreateCommand.java:40) at org.jboss.ejb.plugins.cmp.jdbc.JDBCCommandFactory.createCreateEntityCommand(JDBCCommandFactory.java:128) at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.startStoreManager(JDBCStoreManager.java:427) at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.start(JDBCStoreManager.java:351) at org.jboss.ejb.plugins.CMPPersistenceManager.start(CMPPersistenceManager.java:152) at org.jboss.ejb.EntityContainer.startService(EntityContainer.java:343) at org.jboss.system.ServiceMBeanSupport.start(ServiceMBeanSupport.java:192) at sun.reflect.GeneratedMethodAccessor133.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ////////////////////////////////////////// ABean ////////////////////////////////////////// package com.wattabout.wattsbest.ejb.cmp; import javax.ejb.EntityBean; import javax.ejb.EntityContext; import javax.ejb.CreateException; import javax.ejb.RemoveException; public abstract class ABean implements EntityBean { EntityContext entityContext; public APK ejbCreate(Integer apk1, Integer apk2) throws CreateException { setApk1(apk1); setApk2(apk2); return null; } public void ejbPostCreate(Integer apk1, Integer apk2) throws CreateException { } public void ejbRemove() throws RemoveException { } public abstract void setAfld(String afld); public abstract void setApk1(Integer apk1); public abstract void setApk2(Integer apk2); public abstract String getAfld(); public abstract Integer getApk1(); public abstract Integer getApk2(); public void ejbLoad() { } public void ejbStore() { } public void ejbActivate() { } public void ejbPassivate() { } public void setEntityContext(EntityContext entityContext) { this.entityContext = entityContext; } public void unsetEntityContext() { this.entityContext = null; } } ////////////////////////////////////////// A ////////////////////////////////////////// package com.wattabout.wattsbest.ejb.cmp; import javax.ejb.EJBLocalObject; public interface A extends EJBLocalObject { public void setAfld(String afld); public String getAfld(); public Integer getApk1(); public Integer getApk2(); } ////////////////////////////////////////// AHome ////////////////////////////////////////// package com.wattabout.wattsbest.ejb.cmp; import javax.ejb.EJBLocalHome; import javax.ejb.CreateException; import javax.ejb.FinderException; public interface AHome extends EJBLocalHome { public A create(Integer apk1, Integer apk2) throws CreateException; public A findByPrimaryKey(APK pk) throws FinderException; } ////////////////////////////////////////// APK ////////////////////////////////////////// package com.wattabout.wattsbest.ejb.cmp; import java.io.Serializable; public class APK implements Serializable { public Integer apk1; public Integer apk2; public APK() { } public APK(Integer apk1, Integer apk2) { this.apk1 = apk1; this.apk2 = apk2; } public boolean equals(Object obj) { if (this == obj) { return true; } if (! (obj instanceof APK)) { return false; } APK that = (APK) obj; if (! (that.apk1 == null ? this.apk1 == null : that.apk1.equals(this.apk1))) { return false; } if (! (that.apk2 == null ? this.apk2 == null : that.apk2.equals(this.apk2))) { return false; } return true; } public int hashCode() { int result = 17; result = 37 * result + this.apk1.hashCode(); result = 37 * result + this.apk2.hashCode(); return result; } } ////////////////////////////////////////// ejb-jar.xml ////////////////////////////////////////// <display-name>A</display-name> <ejb-name>A</ejb-name> <local-home>com.wattabout.wattsbest.ejb.cmp.AHome</local-home> com.wattabout.wattsbest.ejb.cmp.A <ejb-class>com.wattabout.wattsbest.ejb.cmp.ABean</ejb-class> <persistence-type>Container</persistence-type> <prim-key-class>com.wattabout.wattsbest.ejb.cmp.APK</prim-key-class> False <cmp-version>2.x</cmp-version> <abstract-schema-name>A</abstract-schema-name> <cmp-field> <field-name>afld</field-name> </cmp-field> <cmp-field> <field-name>apk1</field-name> </cmp-field> <cmp-field> <field-name>apk2</field-name> </cmp-field> ////////////////////////////////////////// jbosscmp-jdbc.xml ////////////////////////////////////////// <ejb-name>A</ejb-name> <table-name>a</table-name> <cmp-field> <field-name>afld</field-name> <column-name>afld</column-name> </cmp-field> <cmp-field> <field-name>apk1</field-name> <column-name>apk1</column-name> </cmp-field> <cmp-field> <field-name>apk2</field-name> <column-name>apk2</column-name> </cmp-field> <a href="http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3824876#3824876">View the original post</a> <a href="http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3824876>Reply to the post</a> ------------------------------------------------------- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click _______________________________________________ JBoss-user mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-user