Существует ограничение базы данных UNIQUE для индекса, которое не позволяет более одной записи иметь одинаковые столбцы.
Есть фрагмент кода, управляемый Hibernate (v2.1.8), выполняющий два вызова DAO getHibernateTemplate().save( theObject )
, в результате чего в указанную выше таблицу вводятся две записи.
Если этот код выполняется без транзакций, он приводит к INSERT, UPDATE, затем к другим SQL-операторам INSERT и еще одному UPDATE и работает нормально. Очевидно, последовательность состоит в том, чтобы сначала вставить запись, содержащую DB NULL, а затем обновить ее соответствующими данными.
Если этот код выполняется в Spring (v2.0.5), заключенный в одну транзакцию Spring, он приводит к двум INSERTS, за которыми следует немедленное исключение из-за ограничения UNIQUE, упомянутого выше.
Эта проблема проявляется только в MS SQL из-за его несовместимости. с ANSI SQL. Он отлично работает с MySQL и Oracle. К сожалению, наше решение кроссплатформенное и должно поддерживать все базы данных.
Какой способ решения данной проблемы вы бы предпочли, имея этот стек технологий?