我正在尝试使用 JPA 更新表格
EntityManager em=JPA.em();
EntityTransaction entr = em.getTransaction();
try{
if(!entr.isActive())
entr.begin();
Tblrecordtypefields updateTblrecordtypes = em.find(Tblrecordtypefields.class,9);
updateTblrecordtypes.setFieldlabel("JPATest");
em.getTransaction().commit();
}finally
{
if(entr.isActive())
entr.rollback();
}
我收到错误 发生 NullPointerException : null 于 updateTblrecordtypes.setFieldlabel("JPATest"); 我该怎么办。
最佳答案
我发现其中可能存在一些问题:
首先,Play 自行管理交易。事务在请求开始时创建,并在请求结束时提交(如果出现异常则回滚)。你试图强行进入它,不建议这样做。要管理实体,只需执行entity.save() 将其标记为“要保存”,并且不要忽略任何更改。
其次,如果您在 Play 中使用 Model 类(您应该如此),您可以使用此类提供的“find”和“findById”方法。建议这样做,而不是直接使用 EntityManager。
请参阅documentation了解更多信息。
基本上,重做代码以遵循 Play 方式,以避免出现问题:)
编辑:作为澄清,我并没有真正回答你为什么获得 NPE 的问题,但我认为当你强行进入框架的设置时,你可能(也许不会!)看到意想不到的情况一旦您修复代码以遵循约定,这些工件就会消失。
如果之后您仍然遇到错误,请告诉我们:)
关于jpa - 在 Play Framework 中使用 JPA 更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7108325/