0

はい、私はこの質問を受け取りました.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 など) を実行できますか?

4

1 に答える 1