JPA 2.0 (Спящий 4.2.4.Final/Spring 3.2.8.Release)/Mysql 5.6JPA Полученное значение столбца на основе столбца идентичности
Для управляемого объекта E ж/автоматически сгенерированный первичный ключ, например,
...
@Id
@GeneratedValue
private int id;
@Column
private String foo;
@Version
@Column(name="mod_date")
private Timetamp modDate;
...
foo должен быть равен: {id}: по старым причинам. Например. если идентификатор был 204, Foo будет «: 204:» Для этого ж/в транзакции это то, что работает
em.persist(e);
em.detach(e);
e = em.find(e.getId());
e.setFoo(":" + e.getId() + ":");
...
Есть ли лучший способ вычисления производной столбца, где значение зависит от генерируемый идентификатор? Без вышеуказанного взлома, то есть прямое обновление столбца после сохранения результатов в org.hibernate.StaleObjectException. Я вижу, что это происходит в модульных тестах (на самом деле я могу пройти через единичный тестовый код и воспроизвести исключение, исключающее проблему с несколькими потоками, обычно связанную с/StaleObjectException
Установка определения столбца mod_date как timestamp (3) в mysql избавилась от исключения StaleObjectException, которое привело меня к неправильному пути. Теперь используйте @PostPersist, и он отлично работает. Thx Alan Hay. – user5842