JPA найти проблему - PullRequest
       3

JPA найти проблему

0 голосов
/ 16 сентября 2010

метод find не возвращает последнюю версию объекта.где-то в моем коде я нахожу объект, меняю его, объединяю и фиксирую мои изменения.В базе данных изменения сделаны, но в другой функции я нахожу этот объект, и мои изменения не там.Я проверил условия гонки, в результате чего условий гонки нет.Я проверил, есть ли дубликаты этого объекта или другие идентификаторы, но это прекрасно работает.

У кого-нибудь есть идея?

Ответы [ 2 ]

1 голос
/ 16 сентября 2010

У вас уже открыт EntityManager, а другой EntityManager выполняет слияние / фиксацию?Устаревшая сущность может исходить из EntityManager, который еще не синхронизирован с изменениями, внесенными в базу данных в другом EntityManager в другом месте.

Попробуйте вызвать метод flush() в EntityManager, который должен быть синхронизирован 'ред.

0 голосов
/ 16 сентября 2010

Джим прав. У меня есть два EntittyManager, которые не синхронизированы. Мое решение сейчас состоит в том, чтобы иметь только одного субъекта-менеджера. Есть хорошее решение, чтобы синхронизировать оба менеджера, потому что у меня есть два потока, и возможно, что оба потока хотят начать транзакцию одновременно, например, что может быть проблемой ...

...