Одинарная кавычка перед параметром в собственном запросе Spring JPA

#spring #spring-boot #hibernate #spring-data-jpa

Вопрос:

Создайте собственный sql — запрос, как показано ниже, в интерфейсе репозитория:

 @Query(value = "select Student.id as id , Student.name as studentname, Teacher.name as teachername from :firstdatabase inner join :seconddatabase on Student.id = Teacher.id;", nativeQuery = true) Listlt;StudentTeachergt; getListStudentTeacher( @Param("firstdatabase") String firstdatabase, @Param("seconddatabase") String seconddatabase);  

База данных и имя таблицы берутся в качестве параметров из класса контроллера следующим образом:

 Listlt;StudentTeachergt; studentTeacherList = studentTeacherRepo.getListStudentTeacher("database1.Student","database2.Teacher");  

Появляется следующая Ошибка :

 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''database1.Student' inner join 'database2.Teacher' on Student.id = Teacher.id' at line 1.  

Мой вопрос заключается в том, как выполнять объединения в базе данных, где имя базы данных параметризуется с помощью собственного запроса, и почему кавычки находятся перед параметрами . мы не получаем котировки при использовании параметров в состоянии where. Пожалуйста, помогите в этом

Комментарии:

1. Вы не должны использовать подобную параметризацию. Также это делается по соображениям безопасности, иначе кто-то может использовать SQL-инъекцию для удаления баз данных и т. Д. и т. Д. Таким образом, JDBC экранирует/кодирует параметры, переданные в запрос.

Ответ №1:

Я думаю, что для таблиц с одинаковыми полями лучше всего создать представление, объединяющее ваши таблицы, затем вы запрашиваете представление в соответствии с параметрами полей вместо названия таблиц