Yestody, у меня возник этот вопрос, как jpa запустить DDL sql с динамическим tableName? обычно я просто использовал DQL и DML как «выбрать, вставить, обновить, удалить». например:
public interface UserRepository extends JpaRepository<User, Integer> {
@Query(value = "select a.* from user a where a.username = ? and a.password = ?", nativeQuery = true)
List<User> loginCheck(String username, String password);
}
, но когда мне нужно запустить DDL sql ниже
String sql = "create table " + tableName + " as select * from user where login_flag = '1'";
, я не нахожу способ решить эту проблему с помощью Jpa (или EntityManager). Наконец, я использовал JDBC для запуска DDL sql, но я думаю, что это уродливо ...
Connection conn = null;
PreparedStatement ps = null;
String sql=" create table " + tableName + " as select * from user where login_flag = '1' ";
try {
Class.forName(drive);
conn = DriverManager.getConnection(url, username, password);
ps = conn.prepareStatement(sql);
ps.executeUpdate();
ps.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
Итак, может ли jpa легко запустить DDL sql (например, CREATE / DROP / ALTER) с динамическим tableName