【发布时间】:2016-11-28 19:28:17
【问题描述】:
在我的 Spring MVC/JPA 应用程序中,我针对其数据库表定义了 User 和 Department 实体。通常许多用户可以属于一个部门,所以我的用户类中有以下内容
@Entity(name = "USER")
public class User {
@Id
@Column(name = "Username")
private String username;
@ManyToOne
@JoinColumn(name = "Department")
private Department department;
}
当需要保存新用户时,我必须将用户与部门 ID 相关联
User
username | BobbySurfs2020
departmentId | 43
我是否需要在我的用户对象上定义一个额外的departmentId 字段只是为了建立这种关联,或者我可以以某种方式使用嵌入的部门对象来设置这个 ID 通过我的设置器setDepartment()?
更新/补充想法:
是否有必要像我在这里一样将Department 嵌套在User 对象中?我认为为我获取的每个用户存储Department 会比仅关联Department ID 占用更多的内存。这样,如果我随时需要部门信息,我只需通过与用户关联的 ID 来查找它们。想法?
非常感谢!
【问题讨论】:
-
不,您只需在数据库的用户表中添加departmanId,然后通过名称获取departman,然后在用户上设置departman并保存它,还将Joincolumn(departman)更改为joincolumn(departmanid)
-
谢谢@mithatkonuk。我还认为可能有必要存储
Department并改用 ID -
那是因为 orm 关系,您只需将存储在 db 中的 departman 提供给您,这样您就可以远离复杂的过程,您也可以在用户类中使用 id 来设置和保存它也可以,但我建议你这样会更酷
-
顺便说一句,您也可以使用仅具有用户列表的部门和用户没有部门对象的单向 orm 这样您就可以摆脱许多在不同用户上相同的部门对象
标签: java spring-mvc jpa