Как преобразовать объект из одного JpaRepository в другой JpaRepository - PullRequest
1 голос
/ 30 сентября 2019

У меня проблема с одним функционалом в моем весеннем приложении. У меня есть 2 таблицы в одной базе данных, обе содержат данные одного типа (идентификатор, заголовок, описание и дата). И я могу получить данные из одной таблицы, но не знаю, как вставить их во 2-ю таблицу.

На моем слое @Service я могу получить данные из таблицы А. Но не знаю, как преобразовать в другой классобъект (оба класса содержат данные samne)

Внедренные 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 голос
/ 30 сентября 2019

1) Определите 2 объекта, по одному для каждой таблицы. Чтобы скопировать данные, создайте экземпляр 2-го типа и, скопируйте свойства, сохраните. Для копирования свойств существует множество способов: вы не можете вызывать каждый метод получения и установки вручную, вы можете использовать некоторые библиотеки, такие как Dozer или MapStruct. Не забудьте установить ID на ноль.

2) Если вы хотите иметь архив изменений, используйте библиотеки, которые помогут его реализовать. Например, рассмотрите возможность использования Enverse .

...