Учитывая Hibernate/JPA объект с набором каскадным для ALL
взаимосвязанного лица:Возможно ли временно отключить каскадирование для объекта Hibernate?
@Entity
public class Entity {
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "entity")
private Set<RelatedEntities> relatedEntities;
}
Можно ли временно отключить каскадирование, например, чтобы объект Entity сохранялся, не сохраняя также связанных с ним событий?
Если вы используете ограничения каскада, вы можете перенести Entity без проверки ограничений сразу же после использования ограничения DEFERRABLE INITIALLY IMMEDIATE. Но в конце транзакции вы должны сохранить также связанные события. Подробнее: http://stackoverflow.com/questions/5300307/not-deferrable-versus-deferrable-initially-immediate –
Спасибо, но не уверены, как это будет работать, поскольку ссылка ссылается на ключевое слово SQL, но каскады управляются от Hibernate? –
Каскады наверняка управляются db (если вы не используете параметр create by hibernate, вы должны их создать), я подозреваю, что спящий режим также может проверять ограничения, если вы добавляете аннотации, но я их не использую. Если вы хотите сохранить Entity без связанных с ним событий, возможно, структура db неправильно спроектирована? –