Параметры не передаются в JPA @query при весенней загрузке - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь сделать резервную копию существующей таблицы через JPA при загрузке Spring.Для этого я передаю дату имени таблицы в качестве параметра в запросе ниже, но, это не настройка в запросе.Если имя таблицы нельзя изменить динамически, тогда кто-нибудь может предложить альтернативное решение для этого.

Ожидаемый результат: INSURANCE_P_CIF_08 / 03/2019 Фактический результат: INSURANCE_P_CIF_ @ P0

InsuranceCIFRepository.java

package com.utility.snapp.crud.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import com.utility.snapp.entities.InsuranceCIF;

@Repository
public interface InsuranceCIFRepository extends JpaRepository<InsuranceCIF, Long>{

    @Query(value = "select * into INSURANCE_P_CIF_?1 from INSURANCE_P_CIF where 1=1", nativeQuery = true)
    public void takeInsurancePCIFBackup(String currentMonthAndYear);

}

TableBackupService.java

package com.utility.service;

import java.time.LocalDateTime;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.utility.snapp.crud.repository.InsuranceCIFRepository;

@Component
public class TableBackupService {

    @Autowired
    InsuranceCIFRepository insuranceCIFRepository;

    public  void takeBackupOfExistingTables() {
        String currentMonthAndYear=getCurrentMonthAndYear();
        System.out.println(currentMonthAndYear+insuranceCIFRepository);
        try {
        insuranceCIFRepository.takeInsurancePCIFBackup(currentMonthAndYear);
        }
        catch(Exception e) {

        }
    }

    public static String getCurrentMonthAndYear() {
        LocalDateTime currentTime=LocalDateTime.now();
        String month=currentTime.getMonth().toString();
        int year=currentTime.getYear();
        return (month+year+"");
    }

}

1 Ответ

0 голосов
/ 08 марта 2019

Альтернативное решение:

  1. Создайте процедуру базы данных, как показано ниже.

разделитель $$

СОЗДАНИЕ ИЛИ ЗАМЕНА ПРОЦЕДУРЫ INSURANCE_P_CIF_BACKUP ()

BEGIN

ОБЪЯВИТЬ createTable varchar (200);

SET createTable = CONCAT ("CREATE TABLE INSURANCE_P_CIF", DATE_FORMAT (SYSDATE (), "% d% m% y")), "КАК ВЫБРАТЬ * ИЗ INSURANCE_P_CIF");

ВЫПОЛНИТЬ НЕМЕДЛЕННО createTable;

end $$

Вызвать процедуру в методе REST API.
вызвать INSURANCE_P_CIF_BACKUP ();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...