如何将对象从一个 JpaRepository 转换为另一个 JpaRepository
Posted
技术标签:
【中文标题】如何将对象从一个 JpaRepository 转换为另一个 JpaRepository【英文标题】:How to convert a object from one JpaRepository into another JpaRepository 【发布时间】:2019-09-29 22:55:25 【问题描述】:我的 Spring 应用程序中的一项功能存在问题。我在同一个数据库中有 2 个表,它们都包含相同类型的数据(id、title、description 和 date)。而且我可以从一张表中获取数据,但不知道如何插入到第二张表中。
在我的@Service 层中,我可以从表 A 中获取数据。但不知道如何转换为另一个类对象(两个类都包含相同的数据)
注入的 JpaRepositories
private TasksRepository theTasksRepository;
private TasksRepositoryArchive theTasksRepositoryArchive;
还有从表 A 中获取对象的代码(TasksRepository - JpaRepository)
public Tasks findById(int theId)
//Check if value is null or not null
Optional<Tasks> result = theTasksRepository.findById(theId);
Tasks theTask = null;
if (result.isPresent())
//if value is not null
theTask = result.get();
else
//if value is null
throw new RuntimeException("Task with given ID couldn't be found " +theId );
return theTask;
【问题讨论】:
【参考方案1】:1) 定义 2 个实体,每个表一个。要复制数据,请创建第二种类型的实例,然后复制属性,然后保存。要复制属性有很多方法:您不能手动调用每个 getter 和 setter,您可以使用一些库,如 Dozer 或 MapStruct。不要忘记将 ID 设置为 null。
2) 如果您想要存档更改,请使用有助于实现它的库。例如,考虑使用Enverse。
【讨论】:
每张桌子我已经有 2 个实体。决定调用 getter 和 setter 来复制数据,正如你所建议的那样,everythink 工作正常。谢谢你的建议。以上是关于如何将对象从一个 JpaRepository 转换为另一个 JpaRepository的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 JpaRepository 从 xml 中的命名本机查询返回 Map 作为结果
我应该如何将 JpaRepository.findOne() 与 SpringBoot 一起使用?
如何将 FindAllBy 与 JpaRepository 中的多个字段一起使用?