Отображение отношений ManyToMany с аннотациями в спящем режиме? - PullRequest
2 голосов
/ 09 июля 2010

Таблица макетов:

TABLE ORDER:
id 
localizedInfoId

Table OrderLocalizedInfo:
id
localizedInfoId
name

Со следующими объектами:



public class Order {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="id")
   private Long id;

    @ManyToMany(
        targetEntity=OrderLocalizedInfo.class,
        cascade={CascadeType.PERSIST, CascadeType.MERGE})
    @JoinTable(
        name="OrderLocalizedInfo",
        joinColumns=@JoinColumn(name="localizedInfoId"),
        inverseJoinColumns=@JoinColumn(name="localizedInfoId"))
   private List localizedInfos;
}

public class OrderLocalizedInfo {

   @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="id")
   private Long id;

    @Column(name="localizedInfoId")
   private Long localizedInfoId;

    @Column(name="name")
   private String name;
}

Я хочу отобразить описанную выше ситуацию, чтобы у меня был список объектов OrderLocalizedInfo для объекта заказа с использованием поля localizedInfoId в каждой таблице. Когда я делаю это, я получаю исключение сопоставления 'Повторное сопоставление столбца для столбца Order.localizedInfos коллекции: localizedInfoId.

Ответы [ 2 ]

6 голосов
/ 10 июля 2010

Я не совсем понимаю вашу физическую модель, но она явно не представляет собой связь многих со многими. Ассоциация «многие ко многим» между A и B включает таблицу соединения, которая содержит столбцы для первичных ключей исходной и целевой таблиц:

+-------+    +-------+    +-------+
|   A   |    |  A_B  |    |   B   |
+-------+    +-------+    +-------+
| A_ID  |    | AID   |    | B_ID  |
| ...   |    | BID   |    | ...   |
+-------+    +-------+    +-------+

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

0 голосов
/ 10 июля 2010

Как сказал Паскаль, отношения ManyToMany, как показано, отсутствуют.Ваша текущая модель, предлагающая список объектов OrderLocalizedInfo, будет лучше представлена ​​в Hibernate в виде коллекции OneToMany - http://docs.jboss.org/hibernate/core/3.5/reference/en/html/collections.html

...