はい、私はこの質問を受け取りました.jpaはどのように動的なtableNameでDDL sqlを実行しますか? 通常、「選択、挿入、更新、削除」のような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 は簡単な方法で動的 tableName を使用して DDL sql (CREATE/DROP/ALTER など) を実行できますか?