Изменения модели в многопоточном приложении JPA - PullRequest
0 голосов
/ 02 марта 2012

У меня есть приложение с графическим интерфейсом и списком акций, которые сохраняются в БД.Я использую 1 EntityManager все время, пока приложение работает, для удаления, изменения и добавления новых акций.У меня есть ветка, которая периодически захватывает фактические курсы акций и сохраняет их в БД.Я использую другой менеджер сущностей в потоке (причина безопасности потока).Это выглядит так:

 // grabbing the actual info and making actualStockPrice with it
 ....
 // adding the correct stock to the new stockprice
 actualStockPrice.setStock(stock);
 // Can't do the next line cause of duplicate primary key
        //stock.getActualStockPrices().add(actualStockPrice);
// Saving new price in db
stockPriceModel.saveActualStockPrice(actualStockPrice);

У меня есть кнопка, чтобы показать таблицу со всеми сохраненными ценами акций.Я заполняю таблицу с помощью stock.getActualStockPrices (), но, поскольку я никогда не добавлял новые акции в акции, в таблице показаны только те акции, которые были в начале программы.Если я раскомментирую stock.getActualStockPrices (). Add (actualStockPrice);я получаю повторяющуюся ошибку первичного ключа, как только сохраняю запас в базу данных, причину новой найденной цены в списке фактических запасов.Так что же делать:?

1 Ответ

0 голосов
/ 02 марта 2012

Если запас уже присутствует в базе данных, он выдаст исключение.Чтобы сохранить только изменения в существующем объекте, используйте merge для его обновления.

Кроме того, настройте режим сброса EntityManager на FlushModeType.COMMIT, по умолчанию установлено значение AUTO.Поэтому stock.getActualStockPrices().add(actualStockPrice) заставляет мгновенно отражать изменения в базе данных.

Вы можете управлять транзакцией вручную, чтобы лучше контролировать отраженные изменения в базе данных: начать транзакцию - операции базы данных - транзакция фиксации / отката .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...