繁体   English   中英

JPA,无法删除记录

[英]JPA, Can not delete record

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

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();
    }
}

你不必放第二个参数,我也把类名放在查询中。 BankAccountString id从不在方法中使用。

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

要删除实体,您应首先查询它,然后将其传递给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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM