У меня проблема с правильными аннотациями в Spring с Hibernate / JPA.У меня есть Entity (BaseModel), и у объекта есть дочерние элементы одного и того же объекта.Чтобы я мог сделать это:
BaseModel base1 = new BaseModel();
BaseModel base2 = new BaseModel();
base1.treeSettings.addChild(base2);
base2.treeSettings.addChild(base1);
Дочерние объекты находятся в TreeSettings, потому что мне нужно добавить еще несколько атрибутов.Но сейчас я не могу понять правильные аннотации.Это то, что я пытался, но, похоже, не работает.
@Entity
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,
property = "id", resolver = EntityIdResolver.class, scope = BaseModel.class)
public class BaseModel {
@Id
@Type(type="org.hibernate.type.UUIDBinaryType")
@GeneratedValue(strategy = GenerationType.AUTO)
private UUID id;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "treeSettings_id", referencedColumnName = "id")
private TreeSettings treeSettings = new TreeSettings();
....
}
@Entity
public class TreeSettings {
@Id
@Type(type="org.hibernate.type.UUIDBinaryType")
@GeneratedValue(strategy = GenerationType.AUTO)
private UUID id;
@OneToOne(mappedBy = "treeSettings", cascade = CascadeType.ALL)
@JsonIdentityReference(alwaysAsId = true)
private BaseModel baseModel;
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.REMOVE, orphanRemoval = true)
@JoinColumn(name = "treeChildList_id", referencedColumnName = "id")
@JsonIdentityReference(alwaysAsId = true)
private Set<BaseModel> treeChildList = new HashSet<>();
....
}