Объединить или обновить объекты персистентности - PullRequest
2 голосов
/ 05 сентября 2011

У меня есть база данных MySQL с интерфейсом hibernate с множеством различных типов объектов, некоторые из которых периодически извлекаются и изменяются другими частями кода, которые работают в агентах JADE.Из-за способа извлечения объектов (в запросах, возвращающих коллекции объектов) они, по-видимому, не управляются менеджером сущностей, и определенно не управляются, когда они передаются агентам без фабрики или менеджера сущностей.

Объекты из базы данных передаются между агентами, прежде чем вернуться в базу данных, в этот момент я хочу обновить версию объекта в базе данных - но каждый раз, когда я объединяю объект,он создает новый объект в базе данных.

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

1 Ответ

0 голосов
/ 06 сентября 2011

Hibernate имеет метод saveOrUpdate, который либо сохраняет объект, либо обновляет его в зависимости от того, существует ли уже объект с таким же идентификатором:

http://docs.jboss.org/hibernate/core/3.3/reference/en/html/objectstate.html#objectstate-saveorupdate

...