Boa Dia Galera.
Algumas informações antes do meu problema:
- Jboss 5.0
- IceFaces 1.7.2 SP1
- Java6 up12
- Banco Oracle 9i
- Hibernate é o que ja vem com o JBoss5
Ok, Vamos lá.
Tenho uma classe que possui como chave duas strings (chave composta)@Entity
@Table(name="T_CONF")
public class Configuration implements Comparable<Configuration>, Serializable {
@EmbeddedId
protected ConfigurationPK configurationPK;
...
@Embeddable
public class ConfigurationPK implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name = "NAME_", nullable = false)
private String name;
@Column(name = "CODE_", nullable = false)
private String itemTypeCode;
// implementacao equals e hashCode.
A classe Group faz um relacionamento ManyToMany com a classe Configuration
@ManyToMany(fetch=FetchType.EAGER)
@JoinTable(name="T_GROUP_ICS",
joinColumns={@JoinColumn(name="GROUP_ID_")},
inverseJoinColumns={@JoinColumn(name="NAME_"),
@JoinColumn(name="CODE_")}
)
private Set<Configuration> ics;
@ManyToMany(mappedBy="ics")
protected Set<Group> groups;
16:43:34,405 WARN [JDBCExceptionReporter] SQL Error: 2291, SQLState: 23000
16:43:34,405 ERROR [JDBCExceptionReporter] ORA-02291: integrity constraint (SYS028382) violated - parent key not found
16:43:34,406 ERROR [AbstractFlushingEventListener] Could not synchronize database state with session
org.hibernate.exception.ConstraintViolationException: could not insert collection rows: [br.com.test.model.Group.ics#11530]
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:94)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.persister.collection.AbstractCollectionPersister.insertRows(AbstractCollectionPersister.java:1416)
at org.hibernate.action.CollectionUpdateAction.execute(CollectionUpdateAction.java:86)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:170)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:365)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:54)
...
Caused by: java.sql.SQLException: ORA-02291: integrity constraint (SYS028382) violated - parent key not found
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:745)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:966)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1170)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3339)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3423)
at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:365)
at org.hibernate.jdbc.NonBatchingBatcher.addToBatch(NonBatchingBatcher.java:46)
at org.hibernate.persister.collection.AbstractCollectionPersister.insertRows(AbstractCollectionPersister.java:1389)
... 70 more
Informação importante: Este erro começou quando mudamos do Jboss4.2 para o Jboss5. Acabamos de realizar testes no Jboss4.2 e funcionou perfeitamente.
Alguma luz ae galera?????