2013-05-09 3 views
5

Использование JPA У меня есть вопрос, связанный с CascadeTypes.JPA CascadeType приоритет?

для примера:

@ManyToMany(fetch=FetchType.LAZY, cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}) 

отличается от этого:

@ManyToMany(fetch=FetchType.LAZY, cascade={CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}) 

Почему? Мне нужно, чтобы cascadetype persist автоматически вставлял объекты, на которые ссылаются объекты в моем сущ. и мне нужно слияние, потому что я не хочу иметь двойные записи в моих таблицах . но когда я определяю persist first, слияние не работает, когда я определяю , сначала слияние, persist не работает.

Почему?

+2

Порядок не имеет значения. Либо у вашего провайдера есть проблема, которая не должна быть, если она соответствует требованиям JPA, либо существует проблема с тем, что структура сущности, которую вы вызываете, сохраняется или объединяется. Можете ли вы опубликовать, что вы делаете? – Chris

+1

какой провайдер JPA вы используете? – blitzen12

ответ

1

Спецификация JPA на самом деле очень читаемый документ и его можно скачать здесь:

https://jcp.org/aboutJava/communityprocess/final/jsr317/index.html

Внутри него на странице 384 он охватывает атрибут cascade в ManyToMany аннотацию:

каскадный элемент определяет набор каскадируемых операций, которые распространяются на связанный объект. Операции, которые являются cascadable, определяются с помощью перечисления CascadeType: public enum CascadeType {ALL, PERSIST, MERGE, REMOVE, REFRESH, DETACH}; Значение cascade = ALL эквивалентно каскаду = {PERSIST, MERGE, REMOVE, REFRESH, DETACH}.

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

Лично я использую подход DIY к объединению объектов в моем контексте персистентности. Хорошая статья, чтобы читать на эту тему здесь:

http://blog.xebia.com/2009/03/23/jpa-implementation-patterns-saving-detached-entities/

Смежные вопросы