Hibernate OneToOne и OneToMany - PullRequest
       5

Hibernate OneToOne и OneToMany

0 голосов
/ 10 июля 2019

У меня проблема с правильными аннотациями в 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<>();
....
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...