simple compund primary key program but horrable exception
ejbclinic Jul 3, 2002 11:25 AMWell i am making simple compond primary key but it does not deploy the code is right i don't know where is mistake.I tried a lot.
20:15:22,709 INFO [CustomerEJB] Created table 'CUSTOMEREJB' successfully.
20:15:22,860 ERROR [EjbModule] Starting failed
org.jboss.deployment.DeploymentException: Error while creating table; - nested throwa
ble: (java.sql.SQLException: Column not found: ) in statement [CREATE TABLE ORDEREJB
(userID VARCHAR(256), orderEvent VARCHAR(256), CustomerEJB_orderNumbers VARCHAR(256),
CONSTRAINT PK_ORDEREJB PRIMARY KEY ())])
at org.jboss.ejb.plugins.cmp.jdbc.JDBCStartCommand.createTable(JDBCStartComma
nd.java:190)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCStartCommand.execute(JDBCStartCommand.j
ava:84)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.start(JDBCStoreManager.jav
//////////////////////////////////////////////////////////
The ejb.jar exml is
/////////////////////////////////////////////////////
<?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>
<enterprise-beans>
<!--CUSTOMER EJB-->
<ejb-name>CustomerEJB</ejb-name>
com.ssuet.customer.Customer
com.ssuet.customer.CustomerHome
<ejb-class>com.ssuet.customer.CustomerBean</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>java.lang.String</prim-key-class>
False
<cmp-version>2.x</cmp-version>
<abstract-schema-name>Customer</abstract-schema-name>
<cmp-field>
<field-name>firstName</field-name>
</cmp-field>
<cmp-field>
<field-name>lastName</field-name>
</cmp-field>
<cmp-field>
<field-name>userID</field-name>
</cmp-field>
<cmp-field>
<field-name>userPwd</field-name>
</cmp-field>
<cmp-field>
<field-name>emailAddress</field-name>
</cmp-field>
<primkey-field>userID</primkey-field>
<ejb-local-ref>
<ejb-ref-name>ejb/OrderHomeLocal</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<local-home>com.ssuet.order.OrderHomeLocal</local-home>
com.ssuet.order.OrderLocal
<ejb-link>OrderEJB</ejb-link>
</ejb-local-ref>
<ejb-name>OrderEJB</ejb-name>
com.ssuet.order.OrderLocal
<local-home>com.ssuet.order.OrderHomeLocal</local-home>
<ejb-class>com.ssuet.order.OrderBean</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>com.ssuet.order.OrderPK</prim-key-class>
False
<cmp-version>2.x</cmp-version>
<abstract-schema-name>Order</abstract-schema-name>
<cmp-field>
<field-name>userID</field-name>
</cmp-field>
<cmp-field>
<field-name>orderEvent</field-name>
</cmp-field>
</enterprise-beans>
<ejb-relation>
<ejb-relation-name>Customer-Order</ejb-relation-name>
<!--defining relation ship of customer-->
<ejb-relationship-role>
<ejb-relationship-role-name>Customer-has-many-Order-numbers</ejb-relationship-role-name>
One
<relationship-role-source>
<ejb-name>CustomerEJB</ejb-name>
</relationship-role-source>
<cmr-field>
<cmr-field-name>orderNumbers</cmr-field-name>
<cmr-field-type>java.util.Collection</cmr-field-type>
</cmr-field>
</ejb-relationship-role>
<!--defining relationship of phone-->
<ejb-relationship-role>
<ejb-relationship-role-name>Order-belongs-to-Customer</ejb-relationship-role-name>
Many
<relationship-role-source>
<ejb-name>OrderEJB</ejb-name>
</relationship-role-source>
</ejb-relationship-role>
</ejb-relation>
</ejb-jar>
///////////////////////////////////////////////////////////
The OrderPK is as follows..........
package com.ssuet.order;
public class OrderPK implements java.io.Serializable{
public String orderevent;
public String userid;
public OrderPK(){
}
public OrderPK(String orderevent,String userid){
this.orderevent=orderevent;
this.userid=userid;
}
public String getOrderEvent(){
return this.orderevent;
}
public String getUserID(){
return this.userid;
}
public boolean equals(Object obj){
if((obj==null)||!(obj instanceof com.ssuet.order.OrderPK))
return false;
OrderPK orderkey=(OrderPK)obj;
if((this.userid.equals(orderkey.userid))&&(this.orderevent.equals(orderkey.orderevent)))
return true;
else
return false;
}
public int hashCode(){
return this.userid.hashCode()^this.orderevent.hashCode();
}
public String toString(){
return this.userid+" "+this.orderevent;
}
}
//////////////////////////////////////////////////////
CUSTOMER.JAVA
package com.ssuet.customer;
import javax.ejb.*;
import java.rmi.*;
public interface Customer extends javax.ejb.EJBObject
{
abstract public String getUserID()throws java.rmi.RemoteException;
abstract public void setName(NameDO name)throws java.rmi.RemoteException;
abstract public NameDO getName()throws java.rmi.RemoteException;
abstract public void setUserPwd(String userpwd)throws java.rmi.RemoteException;
abstract public String getUserPwd()throws java.rmi.RemoteException;
abstract public void setEmailAddress(String emailaddress)throws java.rmi.RemoteException;
abstract public String getEmailAddress()throws java.rmi.RemoteException;
}
/////////////////////////////////////////////////////
CUSTOMERBEAN.JAVA
//////////////////////////////////////////////////
package com.ssuet.customer;
import java.rmi.*;
import javax.ejb.*;
import javax.rmi.*;
import javax.naming.*;
import com.ssuet.order.*;
import java.util.Collection;
public abstract class CustomerBean implements javax.ejb.EntityBean{
public String ejbCreateByUserID(String userid){
setUserID(userid);
return null;
}
public void ejbPostCreateByUserID(String userid){
}
public String ejbCreateByUserIDAndPwd(String userid,String pwd){
setUserID(userid);
return null;
}
public void ejbPostCreateByUserIDAndPwd(String userid,String pwd){
setUserPwd(pwd);
}
public String ejbCreateByUserInfo(String userid,String pwd,NameDO name,String email){
setUserID(userid);
return null;
}
public void ejbPostCreateByUserInfo(String userid,String pwd,NameDO name,String email){
setUserPwd(pwd);
setName(name);
setEmailAddress(email);
}
public void setName(NameDO name){
}
public NameDO getName(){
return null;
}
abstract public void setFirstName(String fname);
abstract public String getFirstName();
abstract public void setLastName(String lname);
abstract public String getLastName();
abstract public void setUserID(String userid);
abstract public String getUserID();
abstract public void setUserPwd(String userpwd);
abstract public String getUserPwd();
abstract public void setEmailAddress(String emailaddress);
abstract public String getEmailAddress();
abstract public void setOrderNumbers(java.util.Collection orders);
abstract public java.util.Collection getOrderNumbers();
}
////////////////////////////////////////////////////////
CUSTOMERHOME.JAVA
////////////////////////////////////////////////////////
package com.ssuet.customer;
import javax.ejb.*;
import java.rmi.*;
public interface CustomerHome extends EJBHome
{
public Customer createByUserID(String userid)throws CreateException,RemoteException;
public Customer createByUserIDAndPwd(String userid,String pwd)throws CreateException,RemoteException;
public Customer createByUserInfo(String userid,String pwd,NameDO name,String email)throws CreateException,RemoteException;
public Customer findByPrimaryKey(String userid)throws javax.ejb.FinderException;
}
///////////////////////////////////////////////////////
ORDERHOMELOCAL.JAVA
package com.ssuet.order ;
import javax.ejb.*;
public interface OrderHomeLocal extends javax.ejb.EJBLocalHome{
public OrderLocal create(String orderevent,String userid);
public OrderLocal findByPrimaryKey(OrderPK orderkey);
}
//////////////////////////////////////////////////////////
ORDERBEN.JAVA
////////////////////////////////////////////////////
package com.ssuet.order;
import javax.ejb.*;
import javax.naming.*;
import javax.rmi.PortableRemoteObject;
public abstract class OrderBean implements javax.ejb.EntityBean{
public OrderPK ejbCreate(String orderevent,String userid){
setOrderEvent(orderevent);
setUserID(userid);
return null;
}
public void ejbPostCreate(String orderevent,String userid){
}
abstract public void setUserID(String userid);
abstract public String getUserID();
abstract public void setOrderEvent(String date);
abstract public String getOrderEvent();
}
////////////////////////////////////////////////////////
ORDERLOCAL.JAVA
/////////////////////////////////////////////////////
package com.ssuet.order;
import javax.ejb.*;
public interface OrderLocal extends javax.ejb.EJBLocalObject{
public String getUserID();
public String getOrderEvent();
}
Can any body tell where is mistake please will be very thankful.