Java entityManager.persist()的经典问题:没有错误,但不会插入到数据库中

Java entityManager.persist()的经典问题:没有错误,但不会插入到数据库中,java,spring,hibernate,jpa,persist,Java,Spring,Hibernate,Jpa,Persist,我在插入新条目时遇到了一个奇怪的问题 问题: entityManager.PersistMyEnty:执行第行,但在数据库中未创建任何条目 我知道很多人以前都有过这个问题,我读过所有这些帖子,但没有一篇能回答我的问题。我不是第一次插入条目。所以我把配置和其他基本的事情都做对了。这意味着我在spring-core.xml中使用了@transactional,并且在dao中的方法之上使用了@transactional 尝试的解决方案:在persist之后添加entityManager.flush,但

我在插入新条目时遇到了一个奇怪的问题

问题: entityManager.PersistMyEnty:执行第行,但在数据库中未创建任何条目

我知道很多人以前都有过这个问题,我读过所有这些帖子,但没有一篇能回答我的问题。我不是第一次插入条目。所以我把配置和其他基本的事情都做对了。这意味着我在spring-core.xml中使用了@transactional,并且在dao中的方法之上使用了@transactional

尝试的解决方案:在persist之后添加entityManager.flush,但这导致


javax.persistence.TransactionRequiredException:中没有事务 进步

还尝试:

em.getTransaction.begin; em.实体; em.getTransaction.commit

导致

不允许在共享EntityManager上创建事务

然后看到有人说问题可能是

AbstractSaveEventListener-由于没有 正在进行的交易

但我没有任何记录表明这可能是原因。如果这就是问题所在,我不知道解决方案到底是什么。我的hibernate日志以行结束

DEBUG 0412185908[80-exec-2 SqlStatementLogger.java:104]从dual中选择mySchema.sequence\u作为我的实体\u PK.nextval 调试0412185908[80-exec-2 SequenceGenerator.java:127]生成的序列标识符:BasicHolder[java.lang.Long[20]] 调试0412185908[80-exec-2 AbstractSaveEventListener.java:131]生成的标识符:20,使用策略:org.hibernate.id.SequenceHiLoGenerator 调试0412185908[80-exec-2 LogicalConnectionImpl.java:314]释放JDBC连接 调试0412185909[80-exec-2 LogicalConnectionImpl.java:332]已发布JDBC连接
调试0412185909[80-exec-2 ConnectionProxyHandler.java:219]hh000163:逻辑连接释放其物理连接,因此问题得到解决。我在Spring-Core.xml中添加了这两行代码


javax.persistence.TransactionRequiredException:没有正在进行的事务。这应该是对你的回答。因此,根据这一点,配置可能存在一些问题@事务应该作为代理工作,但在您的情况下,它似乎不适合。由于某些原因,后处理器无法读取它,这就是您没有代理的原因。为该注释定义可行的后处理器,并在它实际工作时进行调试。即使使用@transactional,我也不明白为什么会这样。这个方法和我用来持久化的其他方法没有什么不同。其他方法都很好。请指出我是否缺少从外部事务调用的任何thingis方法?调用方法之前是否发生任何事务?尝试从另一个事务调用此方法可能是另一个有效的方法。在我的服务中调用此方法之前,正在发生另一个事务。更像这个menuDao.saveNewMenu//工作罚款;menuHistoryDao.updateHistory//坚持不插入;您是否尝试在不调用saveNewMenu的情况下调用updateHistory?我认为你应该从不同的角度来看待你真正的问题。说scopes,我的意思是省略saveNewMenu,而不是调用updateHistory。您还可以尝试在updateHistory方法中根据需要设置传播层