我正在尝试使用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();
}
}
答案 0 :(得分:2)
你不必放第二个参数,我也把类名放在查询中。 <{1}}和BankAccount
从未在方法中使用过。
String id
答案 1 :(得分:0)
要删除实体,您应首先查询它,然后将其传递给remove方法。
例如,如果accountNumber
是BankAccounts
主键:
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();