У меня есть таблица под названием TERRITORY, в которой есть ID, NAME, ID_PARENT_TERRITORY. Это один из многих с TERRITORY_WITH_SUBTERRITORIES. Оба столбца в TERRITORY_WITH_SUBTERRITORIES - это собственный внешний ключ для TERRITORY (Self-ссылки). Это хранит строки, как это:Как сопоставить отношение одного ко многим с самим собой
TERRITORY: ID NAME ID_PARENT_TERRITORY --- ------ --------------------- 1 India null 2 Karnataka 1 3 Bangalore 2
TERRITORY_WITH_SUBTERRITORIES: ID_PARENT_TERRITORY ID_SUBTERRITORY --------------------- ------------------ 1 2 2 3
Я не в состоянии сохранять данные TERRITORY_WITH_SUBTERRITORIES, когда данные сохраняются на ТЕРРИТОРИИ.
Джойн таблицу Я написал это:
@OneToMany(fetch = FetchType.LAZY, targetEntity = TerritoryDataImpl.class)
@JoinTable(name = "TERRITORY_WITH_SUBTERRITORIES",
joinColumns = @JoinColumn(name = "ID_SUBTERRITORY"),
inverseJoinColumns = @JoinColumn(name = "id_parent_territory"))
private List<Territory> childrenStructures = new ArrayList<Territory>();`
После территории собирает parentStructure из пользовательского интерфейса, я следующий код, чтобы сохранить:
territory.getParentTerritorialStructure().getChildrenStructures().add(object);
entityManager.merge(territory);
TerritoryDataImpl:
@Entity
@Table(name = "territory")
public class TerritoryDataImpl {
@Id
@GeneratedValue
@Column(name = "id", columnDefinition = "serial", nullable = false)
private Long id;
@Length(max = 50)
@Column(name = "name", length = 50)
private String name;
@OneToMany(fetch = FetchType.LAZY, targetEntity = TerritoryDataImpl.class)
@JoinTable(name = "TERRITORY_WITH_SUBTERRITORIES",
joinColumns = @JoinColumn(name = "id_parent_structure"), inverseJoinColumns = @JoinColumn(
name = "ID_SUBTERRITORY"))
private List<Territory> childrenStructures = new ArrayList<Territory>();
}
Вы можете разделить классы моделей для КРАЯ и TERRITORY_WITH_SUBTERRITORIES так, что поправки могут быть сделаны? –
Какая ошибка? Вы пробовали CascadeType PERIST/UPDATE/MERGE? –
@ B.K: Поставляется модельный класс для TERRITORY. Нет класса модели для TERRITORY_WITH_SUBTERRITORIES, так как это таблица соединений без дополнительных столбцов и сама привязана к TERRITORY. Таким образом, существует только один модельный класс. – User1230321