@DDwrt100

Как в runtime подключаться к генерируемым таблицам?

Добрый день, подскажи те пожалуйста будет ли так работать?
Ситуация, есть система которая работает с бд. Особенность этой системы что она создает переодически новую талицу, что то типа :
tableImportantResults_02022012
tableImportantResults_03022012


Мне нужно подключаться к генерируемым таблицам и забирать определенные данные.
Пока что я придумал такую схему, но не уверен что она сработает.
Я создаю класс модели
@Entity 
@Table(name = TABLE)
public class Model{
public static string = Table;
@id
@Column(name = "id")
int id
}

И собственно когда я начинаю работать с таблицей меняя статическую переменную, меняю имя таблицы к которой я подключен.

Будет ли такой вариант работать?
  • Вопрос задан
  • 26 просмотров
Пригласить эксперта
Ответы на вопрос 1
@bestie
Не силен в Хибере, но если верить гуглу - есть вариант использовать свой интерцептор, который будет динамически менять имя таблицы https://javaaltaf.blogspot.com/2019/01/change-tabl...
public class CustomInterceptor extends EmptyInterceptor {
 @Override
 public String onPrepareStatement(String sql) {
  System.err.println("Before Modifying SQL =" + sql);
  sql = sql.replace("ATTENDANCE_1_2019 ", "ATTENDANCE_2_2019 ");
  System.err.println("After Modifying SQL =" + sql);
  return sql;
 }
}


Либо как вариант - просто переходите на PlainSQL ("SELECT * FROM :table_name") + NamedParameterJdbcTemplate -> это позволит пропихивать имя таблицы в сам запрос безо всяких проблем, но результат вам придется обрабатывать руками (RowMapper'ом).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы