2010-11-10 2 views
1
@Entity public class Organization { 

@OneToMany 
List<A> Aobjects; 


@OneToMany 
List<B> Bobjects; 


@OneToMany 
List<C> Cobjects; 

} 

У меня есть @OnDelete аннотация для всех участников @OneToMany. Каким будет порядок удаления этих объектов при удалении родительского объекта. Можно ли предположить, что это будет порядок, в котором объявляются объекты.Порядок удаления для содержащихся @OneToMany членов

+0

Что случилось, когда вы попробовали? –

+0

Я не вижу журналы SQL, когда вы выполняете каскадное удаление. Но я столкнулся с несколькими проблемами, если B inturn имеет ссылку на внешний ключ для A, которая приводит к сбою A при удалении. Отсюда вопрос – Sam

ответ

1

У меня есть @OnDelete аннотация для всех членов @OneToMany. Каким будет порядок удаления этих объектов при удалении родительского объекта. Можно ли предположить, что это будет порядок, в котором объявляются объекты.

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

Это может повлиять на порядок столбцов, если вы создаете модель из аннотации, но, хотя:

  • Я был бы очень удивлен, если это имело какое-либо влияние, что бы сделать все чрезвычайно хрупки, непригодным для использования.
  • Hibernate/JPA ничего не говорит о порядке столбцов (потому что это не имеет значения, см. Выше).

Но я столкнулся несколько вопросов, если B INTURN имеет внешний ключ ссылку на который вызывает сбой при удалении

Следует отметить, что в этом вопросе, это очень релевантно IMO. Возьмите мой ответ с солью, но, как я уже сказал, я ожидаю, что механизм базы данных будет обрабатывать вещи соответствующим образом, для механизма базы данных требуются все необходимые метаданные. Но я не эксперт по базам данных, я не уверен, что говорит теория.

Возможно взглянуть на такие вопросы, как:

Или задать вопрос о теории (и практики для заданного двигатель).