JoinTable потерян - PullRequest
       4

JoinTable потерян

3 голосов
/ 10 ноября 2010

У меня есть два следующих класса:

@Entity
class A {
  @Id
  private aId;
  @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
  @JoinTable(name = "AB", joinColumns = @JoinColumn(name = "aId", referencedColumnName = "aId"), inverseJoinColumns = @JoinColumn(name = "bId", referencedColumnName = "bId"))
  private Set<B> bSet;
}

@Entity
class B {
   @Id
   private bId;
}

Я загружаю полную структуру объекта из одной базы данных, а затем ввожу новую транзакцию во вторую базу данных, чтобы снова сохранить структуру. Однако таблица "AB" оставлена ​​пустой. Это очень странно, поскольку «B» сохраняется, хотя я только настойчиво сохраняю «A». Я проверил, что A-объекты содержат непустые множества B, так что это не проблема.

Это оставляет меня с выводом, что Hibernate считает, что «AB» -таблица должна существовать, поскольку и «A», и «B» уже имеют свои первичные ключи. Есть ли способ обойти это, чтобы я мог заставить Hibernate сохранить таблицу соединений во второй базе данных?

1 Ответ

0 голосов
/ 06 января 2012

Полагаю, это происходит потому, что вы используете прокси-объект. То есть, если вы создаете экземпляры A и B с новым оператором, а затем вызываете persist, будет создана запись таблицы присоединения. Но вы используете объект, полученный из entitymanager (это прокси-объекты), поэтому вы должны объединить объект таким образом, чтобы entitymanager создавал новые прокси-объекты этих объектов.

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