Hi,
I use openjpa version 1.3-snasphot and the following entity class which is
used in my application generates the following error :
@Entity
@Table(
name = "CAMEL_ACTIVITYDEFINITION",
uniqueConstraints = @UniqueConstraint(columnNames = {"name"})
)
public class ActivityDefinition extends EntitySupport {
private String name;
private ProcessDefinition processDefinition;
// This crap is required to work around a bug in hibernate
@Override
@Id
@GeneratedValue
public Long getId() {
return super.getId();
}
@Override
public String toString() {
return "Activity[" + getId() + " name: " + getName() + "]";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST,
CascadeType.MERGE })
public ProcessDefinition getProcessDefinition() {
return processDefinition;
}
public void setProcessDefinition(ProcessDefinition processDefinition) {
this.processDefinition = processDefinition;
}
}
ERROR :
Caused by: <openjpa-1.3.0-SNAPSHOT-r422266:881892 nonfatal general error>
org.apache.openjpa.persistence.PersistenceException: Violation of unique
constraint $$: duplicate value(s) for column(s) $$: U_CML_NTN_NAME in
statement [INSERT INTO CAMEL_PROCESSDEFINITION (id, name) VALUES (?, ?)]
{prepstmnt 30276889 INSERT INTO CAMEL_PROCESSDEFINITION (id, name) VALUES
(?, ?) [params=(long) 7, (String) ]} [code=-104, state=23000]
FailedObject: org.apache.camel.bam.model.processdefinit...@17fc44f
at
org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:4351)
at
org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4316)
at
org.apache.openjpa.jdbc.sql.HSQLDictionary.newStoreException(HSQLDictionary.java:292)
at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:102)
at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:72)
at
org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushAndUpdate(PreparedStatementManagerImpl.java:127)
at
org.apache.openjpa.jdbc.kernel.BatchingPreparedStatementManagerImpl.flushAndUpdate(BatchingPreparedStatementManagerImpl.java:80)
at
org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushInternal(PreparedStatementManagerImpl.java:93)
at
org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flush(PreparedStatementManagerImpl.java:81)
at
org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdateManager.java:549)
at
org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdateManager.java:106)
at
org.apache.openjpa.jdbc.kernel.BatchingConstraintUpdateManager.flush(BatchingConstraintUpdateManager.java:59)
at
org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:89)
at
org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:72)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush(JDBCStoreManager.java:719)
at
org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:130)
... 29 more
Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: Violation of
unique constraint $$: duplicate value(s) for column(s) $$: U_CML_NTN_NAME in
statement [INSERT INTO CAMEL_PROCESSDEFINITION (id, name) VALUES (?, ?)]
{prepstmnt 30276889 INSERT INTO CAMEL_PROCESSDEFINITION (id, name) VALUES
(?, ?) [params=(long) 7, (String) ]} [code=-104, state=23000]
at
org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:193)
at
org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$700(LoggingConnectionDecorator.java:58)
at
org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.executeUpdate(LoggingConnectionDecorator.java:983)
at
org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:269)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement.executeUpdate(JDBCStoreManager.java:1601)
at
org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.executeUpdate(PreparedStatementManagerImpl.java:220)
at
org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushAndUpdate(PreparedStatementManagerImpl.java:112)
... 39 more
Can someone tells me how to avoid that ?
Regards,
Charles Moulliard
Senior Enterprise Architect
Apache Camel Committer
*****************************
blog : http://cmoulliard.blogspot.com
twitter : http://twitter.com/cmoulliard
Linkedlin : http://www.linkedin.com/in/charlesmoulliard
Apache Camel Group :
http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm