Спящий однонаправленный @ManyToMany: удалить без ограничений ограничения? - PullRequest
2 голосов
/ 16 января 2012

У меня есть класс А:

@Entity
public class A {
  ...
  @ManyToMany
  private Set<Ref> refs = new HashSet<Ref>();
  ...
}

И класс Ref:

@Entity
public class Ref {
 // no link to A
}

Я хочу удалить A и A_Ref, но не Ref, но я получаю org.hibernate.exception.ConstraintViolationException

Есть ли простой способ сделать это или я должен явно создать класс A_Ref?

Спасибо

Редактировать: Я пытался удалить свой список A непосредственно в hql. Я сделал это в объекте (нарушил отношения), и это сработало (каскад + удаление сирот).

1 Ответ

1 голос
/ 16 января 2012

Я не уверен, понял ли я вас правильно, но из того, что я понял, мое первое предположение состоит в том, что вы не использовали все необходимые аннотации, чтобы убедиться, что hibernate автоматически удалит необходимые ссылки в Ref самостоятельно.

В пределах отношения manyToMany вы можете использовать joinTables и cascadetypes , чтобы убедиться, что hibernate знает, где удалить все необходимые отношения, не создавая для него собственный domainObject.

ТамЕсть много хороших руководств, как это сделать.На первый взгляд, руководство от mkyong выглядит довольно хорошо.Примечание: он аннотировал геттеры вместо объявлений переменных!(это вопрос вкуса).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...