java - 无法解析 @OneToMany 子表 (@JoinColumn) 的属性
问题描述
尝试运行自定义查询时出现上述错误。我知道使用休眠,您需要映射到entity
名称(而不是column
名称)。但是,在 a 的情况下@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;
}
子类
@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
。
有什么建议么?
解决方案
在子类中添加如下关系并相应地更改查询。
@ManyToOne
private Parent p;
@Query("SELECT ch.randomColumnHere FROM Parent pa INNER JOIN Child ch ON pa.id = ch.p.id")
推荐阅读
- asp.net-core - 在 ASP.NET Core 3 中使用中间件修改响应
- c++ - C++ 和 oops 中的多组
- node.js - Angular9 ng-serve 在本地主机之外访问
- .net - 从 .Net Core 3.0 Web API 中的 SharePoint 2010 列表中检索数据
- raspberry-pi - 我可以直接连接一个 GPIO OUTPUT 和 INPUT
- javascript - 无法读取数组中未定义的属性“获取”
- python - 在雪花 Web UI 中工作但通过 python sqlalchemy 连接器不一致的查询
- android - react-native run-android 失败 MacOS
- java - 在 java 中的 MongoDB 字段级编辑中无法识别为参考
- sql - SQL 语句从连接返回匹配记录,从连接返回空记录