У меня есть класс сущностей, который содержит карту. На картах указаны ранжированные объекты типа 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
|-------------| |----------| |---------------|
На самом деле, я не получаю столбец ранга. Что мне не хватает? Возможно ли это?
Спасибо, это решение. Я немного изменил имена, чтобы выразить семантику, для записи: '@ MapKeyColumn' определяет столбец, созданный для ключа карты в таблице отношений, в моем случае это ранг. '@ JoinColumn' определяет столбец в таблице отношений, содержащий внешний ключ в родительской таблице. – JanPl