Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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 JPA事务未回滚持久化调用。插入和提交仅忽略MySQL上的事务规则_Java_Spring_Jpa - Fatal编程技术网

Java JPA事务未回滚持久化调用。插入和提交仅忽略MySQL上的事务规则

Java JPA事务未回滚持久化调用。插入和提交仅忽略MySQL上的事务规则,java,spring,jpa,Java,Spring,Jpa,我有一个@Transactional(rollboor=Exception.class)注释,它使用Spring共享的EntityManager对我的方法进行注释。但是,当我有意将用户名设置为重复时,事务不会回滚persist调用。原始的唯一用户名仍然被提交到数据库。persist调用的行为就像它有自己的提交规则一样。在调试模式下执行该行后,我可以立即在mysql控制台中选择该值。这可能意味着它是自动提交的。SQL日志记录在执行行时显示insert语句,在回滚时不显示delete语句。回滚在内存

我有一个
@Transactional(rollboor=Exception.class)
注释,它使用Spring共享的
EntityManager
对我的方法进行注释。但是,当我有意将用户名设置为重复时,事务不会回滚persist调用。原始的唯一用户名仍然被提交到数据库。persist调用的行为就像它有自己的提交规则一样。在调试模式下执行该行后,我可以立即在mysql控制台中选择该值。这可能意味着它是自动提交的。SQL日志记录在执行行时显示insert语句,在回滚时不显示delete语句。回滚在内存中的H2数据库中完全按照预期工作

  • 我有
    spring.jpa.openin-view=false
  • 我尝试使用
    em.find
    并修改一个值,然后抛出异常。修改已正确回滚。因此,只有persist调用才是问题所在
  • 我尝试了传播
    REQUIRE
    REQUIRE\u NEW
    ,但没有用
  • 用于连接的数据库用户具有适当的权限

    @PersistenceContext
    EntityManager em;
    
    @Transactional(rollbackFor = Exception.class)
    public User save(User user) {
        em.persist(user);
        user.setUsername("duplicate"); // this will throw an exception upon flushing the change
        return user;
    }
    
如何停止此行为并使persist调用与其他所有内容一起提交

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.11</version>
    </dependency>

我没有解决办法。已尝试所有解决方案和注释:(

已解决。请参阅注释。MyISAM支持我的表,它不支持回滚。每个查询单独运行,并立即提交持久化调用。

可能重复的
2018-10-23 00:26:36.909 DEBUG 5475 --- [nio-8080-exec-1] o.s.orm.jpa.JpaTransactionManager        : Initiating transaction rollback
2018-10-23 00:26:36.913 DEBUG 5475 --- [nio-8080-exec-1] o.s.orm.jpa.JpaTransactionManager        : Rolling back JPA transaction on EntityManager [SessionImpl(PersistenceContext[entityKeys=[EntityKey[com.crawlers.main.models.User#85]],collectionKeys=[]];ActionQueue[insertions=ExecutableList{size=0} updates=ExecutableList{size=0} deletions=ExecutableList{size=0} orphanRemovals=ExecutableList{size=0} collectionCreations=ExecutableList{size=0} collectionRemovals=ExecutableList{size=0} collectionUpdates=ExecutableList{size=0} collectionQueuedOps=ExecutableList{size=0} unresolvedInsertDependencies=null])]