2010-07-09 5 views
2

Макет таблицы:Сопоставление отношений 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", 
     [email protected](name="localizedInfoId"), 
     [email protected](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.

ответ

6

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

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

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

+0

Вы правы, это мало кому. Мне нужно сделать @OneToMany – jzilla

+0

@Pascal У меня есть еще один столбец в таблице join. Как я могу сопоставить Java POJO? – vikiiii

Смежные вопросы