У меня есть отношение многие ко многим, которое присваивает метки элементам (PK обозначается *):
+------+ +------------+ +-------+
| ITEM | | ITEM_LABEL | | LABEL |
|------| |------------| |-------|
| *id |<->| *item_id | ┌>| *id |
|------| |------------| | |-------|
| .... | | *label_id |<┘ | ... |
+------+ |------------| +-------+
| order |
|------------|
| enabled |
+------------+
Метки упорядочены и могут быть отключены (оба определены в M: М стол). Я хотел бы иметь возможность читать и записывать все разрешенные метки и их порядок без необходимости создания объекта для таблицы ITEM_LABEL.
@Entity
public class Item {
@Id
private long id;
@ElementCollection
@CollectionTable(name = "ITEM_LABEL", joinColumns = @JoinColumn(name = "item_id"))
@Where(clause = "enabled = 1")
@MapKeyJoinColumn(name = "label_id")
@Column(name = "order")
private Map<Label, Integer> labels;
}
Чтение работает отлично item.getLabes()
получить все разрешенные метки в правильном порядке. Запись, однако, не устанавливает "enabled = 1". Есть ли способ сделать это без создания объекта ITEM_LABEL и изменения схемы БД (установка значения по умолчанию для столбца «включено»)?