У меня есть 3 таблицы в postgresql, для которых у меня есть 3 объекта данных Spring.
Это родительские, дочерние и третьи таблицы с одинаковыми именами на стороне объекта.
Родительская таблица имеет имя столбца col_p, который имеет отношение внешнего ключа с полем id дочерней таблицы.
Мне нужны двунаправленные отношения OneToOne между ними. Итак, я создал сущности следующим образом:
Родительский субъект:
@Entity
@Table(name="parent")
@NamedQuery(name = "Parent.findAll", query = "SELECT p FROM Parent p")
public class Parent implements Serializable {
@OneToOne
@JoinColumn(name = "col_p")
private Parent parent;
}
Дочерняя сущность:
@Entity
@Table(name="child")
@NamedQuery(name="Child.findAll", query="SELECT c FROM Child c")
public class Child implements Serializable {
@OneToOne(mappedBy="child")
private Parent parent;
@ManyToOne
@JoinColumn(name="third_id")
private Third third;
}
Используя это определение сущности, когда я сохраняю parent, используя родительский репозиторий, созданный с использованием данных весны jpa, он работает нормально. Я вижу запись в родительской таблице.
Теперь, есть еще одна сущность по имени Третий (как уже упоминалось в начале), у которой дочерняя сущность имеет один из своих атрибутов следующим образом:
Третье лицо
@Entity
@Table(name="third")
@NamedQuery(name="Third.findAll", query="SELECT t FROM Third t")
public class Third implements Serializable {
@OneToMany(mappedBy="third")
private List<Child> child;
}
Проблема в том, что когда я использую пружинные данные jpa для извлечения сущности с именем Third и ожидаю, что она даст мне Parent сущность от дочерней сущности (third -> child -> parent), родительская сущность всегда возвращается как нулевая.
Когда я запрашиваю таблицы, начиная с идентификатора, который я использую в третьей таблице, и перехожу от дочернего элемента к родительскому, у родительского элемента есть соответствующая запись.
Я не то, что именно я перепутал с отношениями в созданных мною сущностях, которые не принесли бы мне запись для Родительской сущности.
Пожалуйста, помогите.