首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate x多线程= org.hibernate.HibernateException:实例的标识符从97修改为96

Hibernate x多线程= org.hibernate.HibernateException:实例的标识符从97修改为96
EN

Stack Overflow用户
提问于 2020-08-16 13:38:31
回答 1查看 267关注 0票数 0

所以我有这个@Controller的方法,它调用我的@Service (它实现了Runnable,并有一个@Repository自动处理)方法来持久化一个新的@Entity Transcription

@Controller

代码语言:javascript
复制
public void serviceMethod() {
    Transcription transcription = new Transcription();
    transcription.setBotOutput(chatBot.getText());
    transcription.setCustomerInput(request);
    transcription.setDtime(new Timestamp(System.currentTimeMillis()));
    transcription.setSessionId(chatBot.getSessionId());
    transcription.setStatus(chatBot.getStatus());
    transcription.setTopic(chatSession.predicates.get("topic"));            
    transcription.setIsUnderstand(isUnderstand);
    transcription.setSessionsId(chatSession.getId());
            
    transcriptionService.setTranscription(transcription);
    Thread t = new Thread(transcriptionService);
    t.start();
    t.join();
}

@Service

代码语言:javascript
复制
    @Override
    @Transactional
    @Async
    public void run() 
    {
        try {
            transcriptionRepository.save(transcription);//session.persist(transcription);        
            
        } catch (HibernateException ex) 
        {
            logger.error("HibernateException : " + ex, ex);   
        }                     
    }

@Repository

代码语言:javascript
复制
@Repository
@Scope("prototype")
public interface TranscriptionRepository extends JpaRepository<Transcription, Long> {
    List<Transcription> findAllBySessionId(String sessionId);
}

我面临的问题是,当我负载测试它(jMeter)时,有时会出现异常:

org.hibernate.HibernateException: pl.sprint.chatbot.db.Transcription实例的标识符从97更改为96

有人能指出问题所在的正确方向吗?

EN

回答 1

Stack Overflow用户

发布于 2020-08-16 16:30:25

通过在我的@Servicerun()中添加一个简单的事务检查来解决这个问题,如下所示:

代码语言:javascript
复制
if (transcription.getId()!=null && transcriptionRepository.existsById(transcription.getId()))
    transcriptionRepository.save(transcription);//session.persist(transcription); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63437567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档