Проблема в соединении таблиц, управляемых JsonBackreference - PullRequest
0 голосов
/ 02 мая 2020

У меня есть 3 таблицы, которые связаны друг с другом с помощью JsonBackReference. Я сталкиваюсь с проблемами при создании запроса для извлечения некоторых строк путем объединения этих таблиц

Структура всех таблиц похожа на

Table1Entity -> id, Var1_1, var2_1, Var3_1

Table2Entity -> id, var1_2, Var2_2, Var3_2, Table1_Entity_Id

Table3Entity -> id, var1_3, Var2_3, Var3_3, Table2_Entity_Id

Определение фактических объектов не имеет никакого поля, подобного Table1_Entity_Id. Они определены как

@ Entity publi c class Table1Entity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;
private String Var1_1;
private String Var2_1;
private String Var3_1;

@OneToMany(mappedBy = "Table1Entity", cascade = CascadeType.ALL)
@JsonManagedReference("table1Entity-table2s")
private List<Table2Entity> Table2s = new LinkedList<>();

@ Entity publi c class Table2Entity {

@ManyToOne() @JsonBackReference("table1Entity-table2s")
Table2Entity table2Entity;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;
private String Var1_2;
private String Var2_2;
private String Var3_2;

@OneToMany(mappedBy = "table2", cascade = CascadeType.ALL)
@JsonManagedReference("table2-table3s")
private List<Table3Entity> table3s = new LinkedList<>();

@ Entity publi c класс Table3Entity {

@ManyToOne() @JsonBackReference("table2-table3s")
ReportTaskEntity table2;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;
private String Var1_3;
private String Var2_3;
private String Var3_3;

publi c интерфейс Table1Repository расширяет JpaRepository {

TestEntity findByVar1_1(String var1_1);

@Query("select t1 from Table1Entity t1, Table2Entity t2, Table3Entity t3"
     + " where t1.Var1_1 = :var1_1 and"
     + " t3.Table2_Entity_Id = t2.id and"
     + " t2.Table1_Entity_Id = t1.id and"
     + " t3.Var3_3 = :var3_3")
List<TestEntity>
findByVar1_1AndVar3_3(@Param("var1_1") String var1_1, @Param("var3_3") String var3_3);

Функция FindByVar1_1 работает нормально, но пока работает код построить функцию findByVar1_1AndVar3_3 получает ошибку как

. Причина: org.hibernate.QueryException: не удалось разрешить свойство: Table2_Entity_Id of: entity.Table3Entity

Эта команда работает нормально, когда я работаю это в моей базе данных напрямую. Это связано с тем, что поле Table2_Entity_Id присутствует в таблице, но оно явно отсутствует в определении сущности. Есть ли проблема с определением моей сущности, но весь мой другой код работает с этим определением.

Может кто-нибудь, пожалуйста, помогите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...