repository.save不会更新实体,而是尝试插入

时间:2019-05-17 11:33:23

标签: hibernate spring-boot jpa

在我的主要Java线程中,我需要插入一个实体,生成一个线程并结束。在新线程中,我需要更新实体。当我在两个线程中都使用repository.save()时,第二次保存总是像插入一样。我以为我理解了问题,并将主要问题更改为saveAndFlush。这在一种测试环境中有效,而在另一种环境中则无效。我想念什么吗?冲洗不是应该解决的吗?

主线程

        ...
        myEntity = myEntityRepository.saveAndFlush(myEntity);
        invokeNewThread(myEntity);
        return;

新主题

invokeNewThread(MyEntity myEntity) {
        Executor executor;

        executor = Executors.newSingleThreadExecutor();
        executor.execute(
                new Runnable() {
                    MyEntity myEntity;

                    public Runnable init(MyEntity myEntity) {
                        this.myEntity = myEntity;
                        return this;
                    }

                    public void run() {
                        // Some supposedly long running code
                        myEntity.set...;
                        myEntityRepository.save(myEntity);
                    }
                }.init(myEntity));
}

0 个答案:

没有答案