EclipseLink JTA持久性问题(空指针异常)

时间:2015-03-13 18:03:07

标签: java mysql jpa eclipselink jta

我有两个实体在Mater Detail模式中工作,就像我描述的那样:

Stackoverflow Post: jpa-eclipselink-onetomany-derived-ids-fail

该模式与LOCAL RESOURCE一样正常工作,但是当我尝试将示例移动到带有JTA的Web环境GlassFish4.1(JSF)时,我收到以下错误:

Advertencia:DTX5014:beforeCompletion()回调中的捕获异常: entidades.OrderItemPK._persistence_set(OrderItemPK.java)中的java.lang.NullPointerException

持久性类的源代码:

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));
    }

我尝试了两种方法创建和编辑。我知道我做错了什么,欢迎提出建议。

2 个答案:

答案 0 :(得分:1)

您的实体正在使用基本的&#39; long&#39;不允许null的类型,因此请检查您的数据库值是否为null。如果是,快速解决方法是将更改为包装类型&#34; Long&#34;:http://edwin.baculsoft.com/2012/02/nullpointerexception-when-using-jpa/ 如果是这种情况,您将需要跟踪如何使用与主键关联的字段的空值填充数据库。

答案 1 :(得分:1)

问题出在PK类中,将数据类型int更改为Integer然后出现错误方法hashCode()