当调用save(或saveAndFlush)代码时,我需要立即将一个实体持久(插入)到数据库中。
但是,尽管实体是在上下文中创建的,但它不会立即保留在数据库中。
我们正在使用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任务中面临此问题。
任何反馈将不胜感激。
最佳答案
这工作了。
@Component
public class MessageRepositoryCustomImpl implements MessageRepositoryCustom {
@PersistenceContext
EntityManager entityManager;
@Override
@Transactional(propagation = Propagation.REQUIRES_NEW)
public MessageEntity saveImmediate(MessageEntity entity) {
entityManager.persist(entity);
return entity;
}
}