gpt4 book ai didi

java - 无法解析 @OneToMany 子表 (@JoinColumn) 的属性

转载 作者:行者123 更新时间:2023-12-01 19:01:23 25 4
gpt4 key购买 nike

我在尝试运行自定义查询时收到上述错误。据我所知,使用 hibernate,您需要映射到实体名称(而不是列名称)。但是,在 @OneToMany 的情况下,我的子项中没有该列。让我用一个简单的例子来解释(我已经删除了所有其他列和方法):

@Query("SELECT ch.randomColumnHere FROM Parent pa INNER JOIN Child ch ON pa.id = ch.parent_id")

父类

@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;
}

我收到以下异常:

由以下原因引起:org.hibernate.hql.internal.ast.QuerySyntaxException:无法解析属性:parent_id

据我了解,Child 实体 中没有名为 parent_id字段。我该如何解决这个问题?由于对 parent_id 列的唯一“引用”是 Parent 类的 @JoinColumn

有什么建议吗?

最佳答案

在子类中添加如下关系并相应地更改查询。

    @ManyToOne
private Parent p;

@Query("SELECT ch.randomColumnHere FROM Parent pa INNER JOIN Child ch ON pa.id = ch.p.id")

关于java - 无法解析 @OneToMany 子表 (@JoinColumn) 的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59633311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com