Сопоставление отношения ManyToMany с аннотациями гибернации?

Макет таблицы:

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.


person jzilla    schedule 09.07.2010    source источник


Ответы (2)


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

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

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

person Pascal Thivent    schedule 09.07.2010
comment
Вы правы, это не много ко многим. Мне нужно сделать @OneToMany - person jzilla; 12.07.2010
comment
@Pascal У меня есть еще один столбец в таблице соединений. Как я могу сопоставить Java POJO? - person vikiiii; 15.03.2013

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

person apiri    schedule 10.07.2010