多个一对一自引用关系的 JPA 注释
JPA Annotations for Multiple One-to-One Self-Referential Relations
我正在尝试为一个任务对象定义模型,该对象引用了上一个任务和下一个任务。这就是我试图在 CompletableTask.java
class:
中模拟这些关系的方式
@OneToOne(mappedBy = "previousTask", orphanRemoval = true)
@JoinColumn(name = "next_task_id")
private CompletableTask nextTask;
@OneToOne(mappedBy = "nextTask", orphanRemoval = true)
@JoinColumn(name = "previous_task_id")
private CompletableTask previousTask;
但是,当我启动我的应用程序并让 Hibernate 为此创建必要的模式更新时,我收到以下错误日志:
org.hibernate.AnnotationException: Unknown mappedBy in: com.my_package.CompletableTask.nextTask, referenced property unknown: com.my_package.CompletableTask.previousTask
我已经能够通过简单地从 nextTask
的一对一注释中删除 mappedBy = "previousTask"
参数来解决这个问题,但是 previous_task_id
不存在Hibernate 生成的 table,我认为这对于我的预期目的是不正确的。
有人可以解释一下我将如何对此建模吗?如果无法实现同时引用下一个和上一个任务的所需模式,我有什么选择?
mappedBy
表示"owns" 双向关系的属性。
因此,两边都有 mappedBy
是没有意义的。
请删除一个。
我正在尝试为一个任务对象定义模型,该对象引用了上一个任务和下一个任务。这就是我试图在 CompletableTask.java
class:
@OneToOne(mappedBy = "previousTask", orphanRemoval = true)
@JoinColumn(name = "next_task_id")
private CompletableTask nextTask;
@OneToOne(mappedBy = "nextTask", orphanRemoval = true)
@JoinColumn(name = "previous_task_id")
private CompletableTask previousTask;
但是,当我启动我的应用程序并让 Hibernate 为此创建必要的模式更新时,我收到以下错误日志:
org.hibernate.AnnotationException: Unknown mappedBy in: com.my_package.CompletableTask.nextTask, referenced property unknown: com.my_package.CompletableTask.previousTask
我已经能够通过简单地从 nextTask
的一对一注释中删除 mappedBy = "previousTask"
参数来解决这个问题,但是 previous_task_id
不存在Hibernate 生成的 table,我认为这对于我的预期目的是不正确的。
有人可以解释一下我将如何对此建模吗?如果无法实现同时引用下一个和上一个任务的所需模式,我有什么选择?
mappedBy
表示"owns" 双向关系的属性。
因此,两边都有 mappedBy
是没有意义的。
请删除一个。