У меня есть скрипт, который запрашивает мой сервер jboss, что приводит к сохранению новых объектов гибернации.Я создаю model1 и model2, вызываю create для model1 и позволяю cascade = "save-update" позаботиться о model2.Однако этот подход приводит к сбою ограничения первичного ключа в модели 2 иногда , и в этом случае гибернация взрывается.У кого-нибудь есть идеи, как я могу это исправить?
Вот мое отображение и ошибка, которую я получаю.Так как ошибка возникает только время от времени (и входящие данные полностью уникальны), я подозреваю, что у меня может быть проблема с возвратом jboss до того, как сессия будет полностью зафиксирована, и затем следующие данные, которые будут добавлены, запускаются и получают идентификаторэто не должноИли есть какие-нибудь мысли по этому поводу?
Model1.hbm.xml
<hibernate-mapping default-cascade="none">
<class name="Model1Impl" table="MODEL1" dynamic-insert="false" dynamic-update="false">
<cache usage="read-write" />
<id name="id" type="java.lang.Long" unsaved-value="null">
<column name="ID" sql-type="NUMBER(19)"/>
<generator class="native">
</generator>
</id>
...
<many-to-one name="Model2" class="Model2Impl" foreign-key="MODEL1_MODEL2_FKC" cascade="save-update" lazy="false" fetch="select">
<column name="MODEL2_FK" not-null="false" sql-type="NUMBER(19)" unique="true"/>
...
</class>
</hibernate-mapping>
Model2.hbm.xml
<hibernate-mapping default-cascade="none">
<class name="Model2Impl" table="MODEL2" dynamic-insert="false" dynamic-update="false">
<cache usage="read-write" />
<id name="id" type="java.lang.Long" unsaved-value="null">
<column name="ID" sql-type="NUMBER(19)"/>
<generator class="native">
</generator>
</id>
...
<one-to-one name="Model1" class=Model1Impl" property-ref="Model2" cascade="none" lazy="proxy" fetch="select"/>
</class>
</hibernate-mapping>
Ошибка
13:42:15,734 ERROR [JDBCExceptionReporter] ORA-00001: unique constraint (DBSERVER.SYS_C005810470) violated
13:42:15,734 ERROR [AbstractFlushingEventListener] Could not synchronize database state with session
org.hibernate.exception.ConstraintViolationException: could not insert: [Model1Impl]
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:94)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
...
Caused by: java.sql.SQLException: ORA-00001: unique constraint (DBSERVER.SYS_C005810470) violated
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:582)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1986)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1144)
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2152)
Большое спасибо!