0

JPA を使用して複数の行 (存在する場合) を削除しようとしていますが、nullpointer例外が発生します。パラメータとエンティティ マネージャがnullではありません。この例外を引き起こしている可能性のあるアイデアはありますか?

PSクラスには@Transactionalアノテーションが付けられています

@Override
public void removeAccount(String id) {
    try {

        int deleteRecords = entityManager.createQuery("DELETE from bankaccount b where b.accountNumber = ?1", BankAccount.class)
                .setParameter(1, accountNumber)
                .executeUpdate();

    } catch (Exception ex) {
        ex.getMessage();
    }
}
4

2 に答える 2

2

2番目のパラメーターを入力する必要はありません。また、クラス名をクエリに入力します。BankAccountメソッドで使用されることはありString idません。

int deleteRecords = entityManager.createQuery("DELETE from BankAccount b where b.accountNumber = ?1")
                .setParameter(1, accountNumber)
                .executeUpdate();
于 2013-07-11T15:57:10.147 に答える
0

エンティティを削除するには、最初にクエリを実行してから remove メソッドに渡します。

たとえばaccountNumberBankAccounts主キーの場合:

BankAccount account = entityManager.find(BankAccount.class, accountNumber);
entityManager.remove(account);

アップデート

複数のエントリを使用できずprimary key、削除する必要がある場合は、提供したコードを使用できますが、型付きクエリは作成しないでください。

int numberOfRecords = entityManager
    .createQuery("DELETE from bankaccount b where b.accountNumber = ?1")
    .setParameter(1, accountNumber)
    .executeUpdate();
于 2013-07-11T15:20:19.103 に答える