如何将对象从一个 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 中的多个字段一起使用?

如何在 JpaRepository 中为多对一映射实体编写查询

QML/QT 如何将对象从 C++ 转换为 QML?

如何从 C++ 代码将 QML 对象转换为 QQuickWindow?