У меня есть простые отношения с родителями и детьми с @OneToMany
и @ManyToOne
аннотации.Hibernate. Обращайтесь к последнему ребенку
@Entity
public class Parent {
@OneToMany(cascade = CascadeType.ALL, mappedBy = "parent", fetch = FetchType.LAZY)
private List<Child> children = new ArrayList<>();
}
public class Child {
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "parent_id")
@ForeignKey(name = "fk_child_parent")
private Parent parent;
}
Но я также хочу, чтобы сохранить ссылку на текущий (последний) ребенок внутри Parent
лица.
Как это сделать в правильном направлении? Должен ли я ввести новое ненаправленное отношение @OneToOne
в Parent
? Например:
@OneToOne(optional = true, cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "current_child_id", nullable = false)
@ForeignKey(name = "FK_parent_child")
private Child currentChild;
Не могли бы вы объяснить, почему я должен публиковать поля или перемещать аннотации к геттерам/сеттерам? Что не так, если держать их на частных полях? – MyTitle
Вам нужен геттер/сеттер, чтобы получить доступ к полям в вашем коде в любом случае, я помню, что в последнее время я использовал Hibernate, добавляя аннотации на getter's, однако на втором взгляде кажется, что вы можете также добавить аннотации в частное поле и hibernate будет использовать отражение для установки полей. – Brendan
Отредактировано, чтобы предоставить лучшее объяснение этим выборам. – Brendan