当调用save(或saveAndFlush)代码时,我需要立即坚持(插入)实体到数据库。如何在Activiti Service中立即将实体持久化/提交实体到数据库任务
但是,虽然实体是在上下文中创建的,但它不会立即保存在数据库中。
我们使用Spring Boot。
public interface MessageRepository extends JpaRepository<MessageEntity, Long> {
}
服务类
@Service
public class TestService {
@Autowired
private MessageRepository messageRepository;
@Transactional
public MessageEntity saveMessage(MessageEntity entity) throws Exception {
entity = messageRepository.saveAndFlush(entity);
return entity;
}
}
虽然实体创建它不会保持/立即提交到数据库。
我们只在Activiti任务中遇到这个问题。
任何反馈将不胜感激。
谢谢。快速澄清。你如何定义会话。 session.persist(ENT); – Shawn
我们最终使用了EntityManager而不是SessionFactory。这样做的缺点。 EntityManger看起来更标准。 '@Component public class MessageRepositoryCustomImpl implements MessageRepositoryCustom { \t \t @PersistenceContext EntityManager entityManager; \t @Override \t @Transactional(传播= Propagation.REQUIRES_NEW) \t公共MessageEntity saveImmediate(MessageEntity实体){ \t \t entityManager.persist(实体); \t \t return entity; \t} }' – Shawn
不错的选择。由于它是JPA标准,EntityManager始终是首选方式。解决方案是否真的适合你? –