我有一个名为Users
的实体,其登录名,部门作为存储在Users
表中的字段。
我的Spring-Boot
配置定义了为此应用程序中的用户提供系统管理员角色的部门。
关键问题是我希望登录end-point
返回用户数据以及他/她是或不是系统管理员的其他信息。
我认为这些信息应该在User类中,但是我不希望这些信息与其他字段一起存储在数据库中,因为管理部门可能会更改,或者用户将我从一个部门更改为另一个部门不管理系统。
(编辑)当用户请求login()时,我将定义此 IsManager 字段:我将获得用户的department
字段并检查{{1}将列表设置为true ou false。
所以问题是将信息放在实体类的非持久字段中(以及如何做)是否正确,或者我是否可以在rest方法中更改ResponseEntity以添加其他信息(和怎么样??
答案 0 :(得分:8)
简短回答是使用 @Transient 注释。 正确的答案是将UserEntity和UserDto分成两个不同的类,并使用MapStruct进行转换。
答案 1 :(得分:2)
嗯,这似乎是一个偏好/意见的问题,希望仍然没有因此而关闭。
添加@Transient
字段不会造成任何损害,但我仍然希望避免像这样更改@Entities
。
因此,在一个非常类似的情况下,我决定创建一个包含Response
的包装器User
类,以及像系统管理员角色这样的“间接角色”。 / p>
主要是因为我在一个单独的项目/ jar中有所有实体类,然后在各种客户端和/或服务。然后在@Entity
中添加任何内容之前,我会分析是否有任何其他相关代码需要这些内容,或者它是否仅与此服务相关,例如。
如果添加仅与此特定服务/客户有关,我不想将其添加到@Entity
并使其“更复杂”,因为这只是服务需求。
所以我认为我的答案包含在前一段中。