Hi there,
I just switched my datasource from Hypersonic to MySQL.
JBoss Version 3.2.5
MySQL Version 4.0.18
Connector/J Version 3.0.14
The szenario is like this - I have a contract which consists of components that in turn have fields ordered by a sequence holding a value. The aggregation table stores all this information including references to the contract and the component table. As per Spec I initialize the CMP fields in the ejbCreate-method and set the CMR-relations in the ejbPostCreate-method.
The Statement that JBoss tries to execute is:
DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.ComponentFieldValue]
Executing SQL: INSERT INTO COMPONENTFIELDVALUE (CONTRACT, COMPONENT, FIELDNAME, SEQUENCE, VALUE, component, contract)
VALUES (?, ?, ?, ?, ?, ?, ?)
Everything was running fine with Hypersonic, but now I get the following error message:
ERROR [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.ComponentFieldValue]
Could not create entity
java.sql.SQLException: General error, message from server: "Column 'CONTRACT' specified twice" at
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1977)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1163)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1272)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2236)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1741)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1588)
at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:335).......
// ==============================================================
// Create Method
// ==============================================================
/**
* @return
* @throws CreateException
*
* @ejb.create-method
*/
public ComponentFieldValuePK ejbCreateFieldValue(Integer contract, Integer component,
String fieldname, String value, ContractLocal conl , ComponentLocal coml)
throws CreateException, FinderException{
setContract(contract);
setComponent(component);
setFieldname(fieldname);
setSequence(new Integer(0));
setValue(value);
return null;
}
public void ejbPostCreateFieldValue(Integer contract, Integer component,
String fieldname, String value, ContractLocal conl, ComponentLocal coml){
setContractCMR(conl);
setComponentCMR(coml);
}
// ==============================================================
// Container Managed Relations
// ==============================================================
/**
* @return
*
* @ejb.interface-method
* @ejb.relation name = "ContractAndCFValueRelation"
* role-name = "CFValueHasContract"
* target-role-name = "ContractHasCFValues"
* target-ejb = "Contract"
* cascade-delete = "yes"
*
* @jboss.relation fk-column = "contract"
* related-pk-field = "id"
* fk-constraint = "true"
*/
public abstract ContractLocal getContractCMR();
public abstract void setContractCMR(ContractLocal con);
/**
* @return
*
* @ejb.interface-method
* @ejb.relation name = "ComponentAndCFValueRelation"
* role-name = "CFValueHasComponent"
* target-role-name = "ComponentHasCFValue"
* target-ejb = "Component"
* cascade-delete = "yes"
*
* @jboss.relation fk-column = "component"
* related-pk-field = "id"
* fk-constraint = "true"
*/
public abstract ComponentLocal getComponentCMR();
public abstract void setComponentCMR(ComponentLocal col);
I found a posting on the net that has the same problem, but I couldn't find a solution yet.
http://www.mail-archive.com/middlegen-user at lists dot sourceforge dot net/msg00317.html
Has anybody solved this problem yet ?? Is this a JBoss issue or a MySQL issue ??
thanks
matt
-
JBoss / MySQL - column xxx specified twice (0 messages)
- Posted by: Matthias Zint
- Posted on: July 31 2004 13:23 EDT