Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用EntityManager时出现NullPointerException_Java_Spring_Jpa_Spring Data - Fatal编程技术网

Java 使用EntityManager时出现NullPointerException

Java 使用EntityManager时出现NullPointerException,java,spring,jpa,spring-data,Java,Spring,Jpa,Spring Data,我试图用Spring数据实现自定义批处理保存,但是当您使用@PersistenceContext注释时,我得到了一个NullPointerException。 我有另一个存储库扩展了我的自定义存储库,如果我理解正确,它应该允许我将EntityManager注入到impl类中 自定义存储库: public interface FRObjectRepositoryCustom { void save(List<FRObject> list); } public interfa

我试图用Spring数据实现自定义批处理保存,但是当您使用@PersistenceContext注释时,我得到了一个NullPointerException。 我有另一个存储库扩展了我的自定义存储库,如果我理解正确,它应该允许我将EntityManager注入到impl类中

自定义存储库:

public interface FRObjectRepositoryCustom {

    void save(List<FRObject> list);
}
public interface FRObjectRepository extends JpaRepository<FRObject, FRObjectKey>, FRObjectRepositoryCustom {...}
objectrepositorycustom的公共接口{
作废保存(列表);
}
常规JPA存储库:

public interface FRObjectRepositoryCustom {

    void save(List<FRObject> list);
}
public interface FRObjectRepository extends JpaRepository<FRObject, FRObjectKey>, FRObjectRepositoryCustom {...}
对象存储库的公共接口扩展了JpaRepository,对象存储库自定义{…}
以及我的实现类:

public class FRObjectRepositoryCustomImpl implements FRObjectRepositoryCustom {

@PersistenceContext
private EntityManager em;

@Override
public void save(List<FRObject> list) {
    em.getTransaction().begin();
    for (int i = 0; i < list.size(); i++) {
        em.persist(list.get(i));
        if (i % 50 == 0 && i > 0) {
            em.flush();
            em.clear();
        }
    }
        em.getTransaction().commit();
    }
}
公共类FRObjectRepositoryCustomImpl实现了FRObjectRepositoryCustom{
@持久上下文
私人实体管理者;
@凌驾
公共作废保存(列表){
em.getTransaction().begin();
对于(int i=0;i0){
em.flush();
em.clear();
}
}
em.getTransaction().commit();
}
}

有什么想法吗?

您必须注入EntityManager才能初始化它。在Impl类中创建构造函数:@Inject-FRObjectRepositoryCustomImpl(EntityManager-em){this.em=em;}@PriyaJain只是一个简单的例子,虽然相同的代码在不注入em的情况下对我有效。是因为我使用的是spring boot吗?您没有使用这个repo发布代码,也没有发布异常的堆栈跟踪,这是个坏主意。但是Spring数据jpa希望您的自定义类命名为FRObjectRepositoryImpl,而不是FRObjectRepositoryCustomImpl。我再也看不懂人的心思了。可能是