我开发了一个小型的框架项目并在内部块中使用jpa,如下所示:
private void sendMailToTheRegulator(final Machine mc, String rea) {
List<LogProject> pros = null;
try {
pros = JPA.withTransaction(new Function0<List<LogProject>>() {
@Override
public List<LogProject> apply() throws Throwable {
List<ServerModel> ss = JPA.em()
.createQuery("from ServerModel where machineId=")
.setParameter(1, mc.getId()).getResultList();
...
}
mc
中apply()
不存在,因此我无法访问其id
。当我执行代码时,它会抛出mc.getId()
为空
我该怎么做才能解决它?
答案 0 :(得分:0)
mc可以安全地用在您创建的Function0的匿名内部类实例中。仅当mc为null时,才会出现mc.getId()的空错误。如果getId()返回null,则null将作为值传递给setParameter方法。但是如果mc为null,那么你实际上是在尝试在一个不正确的null对象上调用方法getId。
因此,如果您在此代码中获取null,请检查您调用sendMailToTheRegulator方法的位置。很可能mc参数是以null传递的。