我有一个从用户输入更新的 JPA 域实体。根据有关该对象的许多因素,它在更新时会执行一些操作(在这种情况下,更新是“将其标记为已完成”)。
在数据库中,两个“完成后操作配置”字段(note 和 next_workflow)可以为空,并且要么具有感兴趣的值,要么为 NULL。可能有很多,但我从这两个开始。
我在模型类中编写了以下方法:
@PostUpdate
public void gotUpdate() {
System.out.println("Got post update for " + this.getDescription());
if (! this.getNote().isEmpty()) {
Note n = new Note();
n.setAssetId(this.getAssetId());
n.setNotifyLessor(1);
n.setNote(this.getLessorNote() + this.getCapturedData());
n.setCreatedDate(new Date());
n.persist();
}
System.out.println("In the middle of post update for " + this.getDescription());
if (this.getNextWorkflow() != 0) {
Asset a = this.getAssetId();
a.setWorkflowId(Workflow.findWorkflow(this.getNextWorkflow()));
a.merge();
}
System.out.println("Finishing post update for " + this.getDescription());
}
对于具有 NULL "note" 值的实体,控制台输出为:
Got post update for this item
对于具有非空“note”值和空“nextWorkflow”值的实体,控制台输出为:
Got post update for this item
In the middle of post update for this item
任何地方都没有错误,没有堆栈转储,什么都没有。该方法只是默默地退出,并且我在这个实体上所做的合并没有完成(数据库保持不变)。
在调试器中逐步执行此操作会到达正在测试事物的那一行,如果值为 NULL,它会弹出一个选项卡,上面写着“找不到源”,我真的不知道该怎么做。我认为这只是调试器说它不能进入某些东西,但我实际上并没有要求它...