Я получаю вышеуказанную ошибку при попытке выполнить пользовательский запрос. Я понимаю, что в спящем режиме вам необходимо сопоставить имена entity
(не имена column
). Однако в случае @OneToMany
у меня нет столбца в дочернем элементе. Позвольте мне объяснить на простом примере (я удалил все остальные столбцы и методы):
@Query("SELECT ch.randomColumnHere FROM Parent pa INNER JOIN Child ch ON pa.id = ch.parent_id")
Parent.class
@Entity(name="Parent")
@Table(name="parent")
@Builder(toBuilder = true)
@AllArgsConstructor(access = AccessLevel.PACKAGE)
@NoArgsConstructor
@Setter
@Getter
public class Parent {
@Id
@SequenceGenerator(name = "parent_id_seq", sequenceName = "parent_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "parent_id_seq")
private Long id;
@OneToMany (cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "parent_id", nullable = false, updatable = false)
private List<Child> children;
}
Child .class
@Entity(name="Child")
@Table(name="child")
@Builder(toBuilder = true)
@AllArgsConstructor(access = AccessLevel.PACKAGE)
@NoArgsConstructor
@Setter
@Getter
public class Child {
@Id
@SequenceGenerator(name = "child_id_seq", sequenceName = "child_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "child_id_seq")
private Long id;
@Column(name="randomcolumnhere")
private Double randomColumnHere;
}
Я получаю следующее исключение:
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: could not resolve property: parent_id
Я понимаю, что field
с именем parent_id
в Child entity
. Как я могу обойти это? Поскольку единственной «ссылкой» на столбец parent_id
является @JoinColumn
класса Parent
.
Есть предложения?