0

我正在尝试使用 JPA 删除多行(如果有),但出现空指针异常。该参数和实体管理器为空。任何想法可能导致此异常?

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

您不必输入第二个参数,我也将类名放入查询中。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 回答