Я хочу изменить уникальный ключ от одного объекта объекта к другому в одном @Transaction
метод:Hibernate и флеш: обновление бросает дубликат ключа ошибки
Entity oldone=dao.getEntity(oldid);
Entity newone=dao.getEntity(newid);
oldone.setBarcode(null);
dao.update(oldone); //free the unique key "barcode"
newone.setBarcode(barcode);
dao.update(newone); //set the unique key "barcode"
Но этот код бросает: Дублировать запись для ключа «штрих-код» Дубление Я обнаружил, что после первого dao.update в базе данных ничего не меняется. I судимый установить спящий режим flushmode на «всегда», но не изменился:
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.bytecode.use_reflection_optimizer">false</prop>
<prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.search.autoregister_listeners">false</prop>
<prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</prop>
<prop key="hibernate.flushMode">always</prop>
</props>
</property>
</bean>
Почему спящий режим не смывать?
Похоже, что всегда полностью игнорируется, потому что, если после обновления вы добавите «session.flush()», все будет работать. –
Tobia
Почему вы пишете эту собственность два раза? false –
Krishna
Только CTRL-C CTRL-V ошибка. – Tobia