EclipseLink JTA 持久性问题(空指针异常)
EclipseLink JTA Persistence issue (Null Pointer Exception)
我有两个实体在 Mater Detail 模式下工作,就像我描述的那样:
该模式在使用 LOCAL RESOURCE 时按预期工作,但是当我尝试将示例移动到带有 JTA 的 Web 环境 GlassFish4.1 (JSF) 时,出现以下错误:
广告:DTX5014:在 beforeCompletion() 回调中捕获异常:
java.lang.NullPointerException 在 entidades.OrderItemPK._persistence_set(OrderItemPK.java)
持久化源码class:
import java.util.List;
import javax.persistence.Query;
import javax.persistence.EntityManager;
import java.util.List;
import javax.persistence.Query;
import javax.persistence.EntityManager;
public abstract class AbstractFacade<T> {
private Class<T> entityClass;
protected abstract EntityManager getEntityManager();
public AbstractFacade(Class<T> entityClass) {
this.entityClass = entityClass;
}
public void create(T entity) {
getEntityManager().persist(entity);
}
public T edit(T entity) {
return getEntityManager().merge(entity);
}
public void remove(T entity) {
getEntityManager().remove(getEntityManager().merge(entity));
}
我尝试了创建和编辑这两种方法。任何想法我做错了什么,欢迎提出建议。
您的实体正在使用不允许为空的基本 'long' 类型,因此请检查您的数据库值是否不为空。如果是,快速解决方法是将 更改为包装器类型 "Long":http://edwin.baculsoft.com/2012/02/nullpointerexception-when-using-jpa/
如果是这种情况,您将需要跟踪如何使用与主键关联的字段的空值填充数据库。
问题出在PKclass,将数据类型int改为Integer,然后错误出现在方法hashCode()
我有两个实体在 Mater Detail 模式下工作,就像我描述的那样:
该模式在使用 LOCAL RESOURCE 时按预期工作,但是当我尝试将示例移动到带有 JTA 的 Web 环境 GlassFish4.1 (JSF) 时,出现以下错误:
广告:DTX5014:在 beforeCompletion() 回调中捕获异常: java.lang.NullPointerException 在 entidades.OrderItemPK._persistence_set(OrderItemPK.java)
持久化源码class:
import java.util.List;
import javax.persistence.Query;
import javax.persistence.EntityManager;
import java.util.List;
import javax.persistence.Query;
import javax.persistence.EntityManager;
public abstract class AbstractFacade<T> {
private Class<T> entityClass;
protected abstract EntityManager getEntityManager();
public AbstractFacade(Class<T> entityClass) {
this.entityClass = entityClass;
}
public void create(T entity) {
getEntityManager().persist(entity);
}
public T edit(T entity) {
return getEntityManager().merge(entity);
}
public void remove(T entity) {
getEntityManager().remove(getEntityManager().merge(entity));
}
我尝试了创建和编辑这两种方法。任何想法我做错了什么,欢迎提出建议。
您的实体正在使用不允许为空的基本 'long' 类型,因此请检查您的数据库值是否不为空。如果是,快速解决方法是将 更改为包装器类型 "Long":http://edwin.baculsoft.com/2012/02/nullpointerexception-when-using-jpa/ 如果是这种情况,您将需要跟踪如何使用与主键关联的字段的空值填充数据库。
问题出在PKclass,将数据类型int改为Integer,然后错误出现在方法hashCode()