Я получаю «java .lang.IllegalStateException: множественные представления одной и той же сущности», даже если для @Id установлено значение true, и я использую отношение «один ко многим» в моей переменной.
Вот классы, которые я пытаюсь связать друг с другом:
@Entity
@Table(name = "map_area")
public class MapArea extends BasicModel {
@Id
@Column(nullable = false, unique = true)
private String name;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "area", referencedColumnName = "name")
public List<AlternativeAreaName> alternativeNames;
public MapArea() {}
public MapArea(String name) {
this.name = name;
this.alternativeNames = new ArrayList<>();
}
}
@Entity
@Table(name = "alternative_area_name")
public class AlternativeAreaName implements Serializable {
@Id
@Column(nullable = false, unique = false)
private String area;
@Column(nullable = true)
private String alternativeName;
public AlternativeAreaName(){}
public AlternativeAreaName(String area, String alternativeName) {
this.area = area;
this.alternativeName = alternativeName;
}
}
Я хочу, чтобы JPA создала другую таблицу, которая относится к этому простому на основе Переменная name, но всякий раз, когда я пытаюсь добавить ее в список и сохранить в БД, я получаю
java .lang.IllegalStateException: несколько представлений одного и того же объекта
MapArea mapArea = new MapArea("example");
AlternativeAreaName altAreaName1 = new AlternativeAreaName("example", "alt example");
AlternativeAreaName altAreaName2 = new AlternativeAreaName("example", "alt example2");
mapArea.alternativeNames.add(altAreaName2);
mapAreaRepository.save(mapArea);