JPA,无法删除记录

时间:2013-07-11 14:52:04

标签: java sql hibernate jpa

我正在尝试使用JPA删除多行(如果有的话),并且我得到 nullpointer 异常。参数和实体管理器 null。可能导致此异常的任何想法?

P.S该课程注释为@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();
    }
}

2 个答案:

答案 0 :(得分:2)

你不必放第二个参数,我也把类名放在查询中。 <{1}}和BankAccount从未在方法中使用过。

String id

答案 1 :(得分: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();