Hibernate.Сохранять только не сохраненные объекты - PullRequest
1 голос
/ 31 января 2012

Мне нужно сделать спящий режим, чтобы сохранить только неперспективные объекты.Если этот объект уже сохранен, hibernate не должен ничего делать или возвращать id сохраненного объекта.Конечно, методы equals () и hashCode () более мощные и работают нормально.Могу ли я сделать это как-то через конфигурацию или что-то вроде прослушивателя pre insert?Например:

session.beginTransaction();
ElementToPersist element = new ElementToPersist();
element.setName("Element");
element.setValue("Value");

session.save(element);
session.getTransaction().commit();

session.beginTransaction();
ElementToPersist element2 = new ElementToPersist();
element2.setName("Element");
element2.setValue("Value");

session.save(element2);
session.getTransaction().commit();

В моем случае оба элемента будут сохранены с разными идентификаторами.Как я могу сделать hibernate, чтобы проверить наличие этого элемента перед вставкой?Вы можете показать лучшую практику?Спасибо.

1 Ответ

4 голосов
/ 31 января 2012

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

...