2014-10-24 3 views
0

У меня есть класс сущностей, который содержит карту. На картах указаны ранжированные объекты типа Child.Как сохранить JPA-карту @OneToMany

@Entity 
public class Parent implements Serializable { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Integer id; 
    @OneToMany 
    @JoinTable  
    private Map<String, Child> ranking; 
} 

@Entity 
public class Child implements Serializable { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Integer id; 
} 

Я поставил объекты на карту, как так:

ranking.put(1, childA); 
ranking.put(2, childB); 
ranking.put(3, childA); 

класс Ребенок не ссылается на подразделы. Ключ карты - это атрибут ранжирования, который я хочу сохранить. Я не хочу, чтобы атрибут ранжирования был частью класса Child. я хочу достичь таблицы объединения (parent_child), где столбцы выглядят как:

|-------------| |----------| |---------------| 
| parent  | | child | | parent_child | 
|-------------| |----------| |---------------| 
| id   | | id  | | parent_id  | 
| ...   | | ...  | | child_id  | 
|    | |   | | ranking  | <-- missing 
|-------------| |----------| |---------------| 

На самом деле, я не получаю столбец ранга. Что мне не хватает? Возможно ли это?

ответ

1

Как указывалось выше, вам нужно будет создать дополнительный Сущность, скажем, отношение. После этого вы можете сопоставить это изображение как:

+0

Спасибо, это решение. Я немного изменил имена, чтобы выразить семантику, для записи: '@ MapKeyColumn' определяет столбец, созданный для ключа карты в таблице отношений, в моем случае это ранг. '@ JoinColumn' определяет столбец в таблице отношений, содержащий внешний ключ в родительской таблице. – JanPl

0

Вы не должны использовать карту в вашем случае, для этой проблемы необходимо создать объект для parent_child и создать @NamedQuery вернуть звание с детьми

+0

Звучит многообещающе, но я не могу представить результат. Я бы хотел увидеть решение, основанное на этой идее. Не могли бы вы подробнее рассказать об этом? – JanPl

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