#java #spring #spring-data-jpa
#java #spring #spring-data-jpa
Вопрос:
У меня следующая структура классов
@Entity
@Data // lombok
public class Entity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "entity_details_id", referencedColumnName = "id")
@JsonManagedReference(value = "entityDetails")
private EntityDetails entityDetails;
}
@Entity
@Data
public class EntityDetails {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@OneToOne(mappedBy = "entityDetails")
@JsonBackReference(value = "entityDetails")
private Entity entity;
// Some more fields
@OneToMany(mappedBy = "entityDetails", cascade = CascadeType.ALL, orphanRemoval = true)
@JsonManagedReference(value = "childEntityDetails")
private List<Child> childList;
}
@Entity
@Data
public class Child {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "description")
private String description;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "entity_details_id")
@JsonBackReference(value = "childEntityDetails)
private EntityDetails entityDetails;
}
Предположим, у меня есть объект Entity со следующей структурой:
Сущность{ id: null, entityDetails: { id: null, дочерний список: [ { id: null, описание: «ch1» }, { id: null, описание: «ch2» } ] } }
Когда я вызываю entityRepository.save(entity)
, все объекты сохраняются, но в Child
таблице нет значения для entity_details_id
. Другие значения верны (я Entity.entity_details_id
правильно установил), но это не работает. Я не уверен, что я что-то упускаю или я просто делаю это неправильно.
Комментарии:
1. попробуйте добавить
@JoinColumn(name = "entity_details_id")
в EntityDetails и удалить его изChild
класса2. @silentsudo вы не можете иметь
@JoinColumn
вmappedBy
поле3. конечно, путем удаления ассоциации