Generation only supported with single PK field
cycchow Jan 24, 2005 11:56 PMMy entity bean have a compound key but when i deploy, the jboss always throw this exception:
what does it mean?
2005-01-25 11:19:20,737 WARN [org.jboss.system.ServiceController] Problem starting service jboss.j2ee:jndiName=cotonenfant.ProductColor,service=EJB
org.jboss.deployment.DeploymentException: Generation only supported with single PK field
the following is my code
package com.cotonenfant.ejb; import javax.ejb.EntityBean; import javax.ejb.EntityContext; import javax.ejb.RemoveException; /** * @ejb.bean * name = "ProductColor" * local-jndi-name = "cotonenfant.ProductColor" * view-type = "local" * type = "CMP" * cmp-version = "2.x" * @ejb.util generate = "physical" * @ejb.finder * view-type = "local" * description = "findAll" * signature = "java.util.Collection findAll()" * result-type-mapping = "Local" * method-intf = "LocalHome" * @ejb.finder * view-type = "local" * signature="java.util.Collection findByProduct(java.lang.Integer pid)" * query="SELECT OBJECT(p) FROM ProductColor AS p WHERE p.productId=?1" * result-type-mapping="Local" * method-intf="LocalHome" */ public abstract class ProductColorBean extends BaseEntityBean implements EntityBean { /** * @ejb.persistence * jdbc-type = "INTEGER" * column-name = "product_id" * sql-type = "integer" * @ejb.pk-field */ public abstract java.lang.Integer getProductId(); public abstract void setProductId(java.lang.Integer productId); /** * @ejb.persistence * jdbc-type = "VARCHAR" * column-name = "color" * sql-type = "varchar(10)" * @ejb.pk-field */ public abstract java.lang.String getColorCode(); public abstract void setColorCode(java.lang.String colorCode); /** * @ejb.persistence * jdbc-type = "VARCHAR" * column-name = "size" * sql-type = "varchar(10)" * @ejb.pk-field */ public abstract java.lang.String getSize(); public abstract void setSize(java.lang.String size); /** * @ejb.persistence * jdbc-type = "INTEGER" * column-name = "qty" * sql-type = "integer" */ public abstract java.lang.Integer getQty(); public abstract void setQty(java.lang.Integer qty); /** * @ejb.persistence * jdbc-type = "INTEGER" * column-name = "qty_sold" * sql-type = "integer" */ public abstract java.lang.Integer getQtySold(); public abstract void setQtySold(java.lang.Integer qtySold); public com.cotonenfant.ejb.pk.ProductColorPK ejbCreate(com.cotonenfant. dataobjects.ProductColorData data) throws javax.ejb.CreateException { this.setProductId(data.getProductId()); this.setColorCode(data.getColorCode()); this.setSize(data.getSize()); this.setData(data); return null; } // public void ejbPostCreate(com.cotonenfant.dataobjects.ProductColorData data) { // } /** * @ejb:interface-method view-type="both" */ public abstract com.cotonenfant.dataobjects.ProductColorData getData(); /** * @ejb:interface-method view-type="both" */ public abstract void setData(com.cotonenfant.dataobjects.ProductColorData data); }
/* * Generated by XDoclet - Do not edit! */ package com.cotonenfant.ejb.pk; /** * Primary key for ProductColor. */ public class ProductColorPK extends java.lang.Object implements java.io.Serializable { public java.lang.Integer productId; public java.lang.String colorCode; public java.lang.String size; public ProductColorPK() { } public ProductColorPK( java.lang.Integer productId,java.lang.String colorCode,java.lang.String size ) { this.productId = productId; this.colorCode = colorCode; this.size = size; } public java.lang.Integer getProductId() { return productId; } public java.lang.String getColorCode() { return colorCode; } public java.lang.String getSize() { return size; } public void setProductId(java.lang.Integer productId) { this.productId = productId; } public void setColorCode(java.lang.String colorCode) { this.colorCode = colorCode; } public void setSize(java.lang.String size) { this.size = size; } public int hashCode() { int _hashCode = 0; if (this.productId != null) _hashCode += this.productId.hashCode(); if (this.colorCode != null) _hashCode += this.colorCode.hashCode(); if (this.size != null) _hashCode += this.size.hashCode(); return _hashCode; } public boolean equals(Object obj) { if( !(obj instanceof com.cotonenfant.ejb.pk.ProductColorPK) ) return false; com.cotonenfant.ejb.pk.ProductColorPK pk = (com.cotonenfant.ejb.pk.ProductColorPK)obj; boolean eq = true; if( obj == null ) { eq = false; } else { if( this.productId != null ) { eq = eq && this.productId.equals( pk.getProductId() ); } else // this.productId == null { eq = eq && ( pk.getProductId() == null ); } if( this.colorCode != null ) { eq = eq && this.colorCode.equals( pk.getColorCode() ); } else // this.colorCode == null { eq = eq && ( pk.getColorCode() == null ); } if( this.size != null ) { eq = eq && this.size.equals( pk.getSize() ); } else // this.size == null { eq = eq && ( pk.getSize() == null ); } } return eq; } /** @return String representation of this pk in the form of [.field1.field2.field3]. */ public String toString() { StringBuffer toStringValue = new StringBuffer("[."); toStringValue.append(this.productId).append('.'); toStringValue.append(this.colorCode).append('.'); toStringValue.append(this.size).append('.'); toStringValue.append(']'); return toStringValue.toString(); } }