2 个实体之间的多个 Spring JPA 关系
Multiple Spring JPA relationships between 2 entities
我有 2 个实体,一个用于任务列表,另一个用于用户。用户可以为自己或他们的朋友创建任务,因此在任务实体中我有不同的列引用 User
实体,一个用于 createdBy
,另一个用于 createdFor
,最后一个用于 modifiedBy
.
在 tasks
实体中,我建立了以下 @ManyToOne
JPA 关系:
@ManyToOne(optional = false)
@JoinColumn(name = "created_by", nullable = false,
referencedColumnName = "id")
private User createdBy;
@ManyToOne
@JoinColumn(name = "created_for", nullable = false,
referencedColumnName = "id")
private User createdFor;
@ManyToOne
@JoinColumn(name = "modified_by", nullable = false,
referencedColumnName = "id")
private User modifiedBy;
但我不确定如何在 Users
端进行链接,我有以下 @OneToMany
关系:
@OneToMany(mappedBy = "createdFor", cascade = CascadeType.ALL)
private List<Task> taskList;
但我不确定如何处理其他关系,因为我真的不需要 taskList
来处理用户创建的任务或他修改的任务。
你不需要映射一个 Entity 中的所有东西,也不需要像 bi-directional.
配置每一个关系
因此,如果您确实不需要访问从给定 User
创建和修改的 Tasks
,请忽略它们并且不要将它们映射到 User
。
将关系配置为单向是完全有效的。您现有的代码应该已经可以完美运行了。
我有 2 个实体,一个用于任务列表,另一个用于用户。用户可以为自己或他们的朋友创建任务,因此在任务实体中我有不同的列引用 User
实体,一个用于 createdBy
,另一个用于 createdFor
,最后一个用于 modifiedBy
.
在 tasks
实体中,我建立了以下 @ManyToOne
JPA 关系:
@ManyToOne(optional = false)
@JoinColumn(name = "created_by", nullable = false,
referencedColumnName = "id")
private User createdBy;
@ManyToOne
@JoinColumn(name = "created_for", nullable = false,
referencedColumnName = "id")
private User createdFor;
@ManyToOne
@JoinColumn(name = "modified_by", nullable = false,
referencedColumnName = "id")
private User modifiedBy;
但我不确定如何在 Users
端进行链接,我有以下 @OneToMany
关系:
@OneToMany(mappedBy = "createdFor", cascade = CascadeType.ALL)
private List<Task> taskList;
但我不确定如何处理其他关系,因为我真的不需要 taskList
来处理用户创建的任务或他修改的任务。
你不需要映射一个 Entity 中的所有东西,也不需要像 bi-directional.
配置每一个关系因此,如果您确实不需要访问从给定 User
创建和修改的 Tasks
,请忽略它们并且不要将它们映射到 User
。
将关系配置为单向是完全有效的。您现有的代码应该已经可以完美运行了。