java - 如何在 JPA 实体中创建非持久字段?

标签 java jpa spring-boot spring-data-jpa

我有一个名为 Users 的实体,其登录名、姓名和部门作为存储在 Users 表中的字段。

我的 Spring-Boot 配置定义了为该应用程序中的用户提供系统管理员角色的部门。

关键问题是我希望登录端点返回用户数据以及他/她是否是系统管理员的附加信息。

我认为此信息应该位于 User 类中,但我不希望此信息与其他字段一起存储在数据库中,因为管理部门可能会发生变化,或者用户从一个部门更改为另一个部门也会发生这种情况不管理系统。

(编辑)当用户请求登录()时,我将定义此IsManager字段:我将获取用户的department字段并检查managerDepartment 的列表将其设置为 true 或 false。

所以问题是,将该信息放入实体类中的非持久字段中是否正确(以及如何做到这一点),或者我是否可以更改其余方法中的 ResponseEntity 以添加附加信息(以及如何)?

最佳答案

简短的答案是使用@Transient注释。 正确的答案是将 UserEntity 和 UserDto 分离为两个不同的类,并使用 MapStruct 进行转换。

关于java - 如何在 JPA 实体中创建非持久字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47265594/

相关文章:

java - Android 开发者网站上的 Java 规范 equals() 方法

java - android 中的适配器使用相同的重写方法

java - 在 Android 中更改 TextView 的值

java - JPA:多个表对应一个实体

java - graphql-java 和 hibernate - 查询中甚至未指定的延迟加载关系

java - 使用 Spring boot 运行集成测试 (NoSuchBeanDefinitionException)

java - 如何在我自己的应用程序中获得拖动到 bin 的主屏幕行为?

java - 何时在 JPA 中使用一对多或多对一

java - 如何修复 hibernate "object references an unsaved transient instance - save the transient instance before flushing"错误

java - 当我从 mysql 中检索时间时,时间晚了六个小时