草庐IT

de_transaction

全部标签

java - 如何防止 "Local transaction already has 1 non-XA Resource"异常?

我在无状态EJB中使用了2个PU,它们中的每一个都在一个方法上被调用:@PersistenceContext(unitName="PU")privateEntityManagerem;@PersistenceContext(unitName="PU2")privateEntityManagerem2;@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)publicvoidgetCandidates(finalIntegereventId)throwsControllerException{ElectionEventel

java - Spring @Transactional注解: Self Invocation

我知道当从同一个类内部调用事务方法时,它不会在事务中运行。Spring为事务方法创建代理并将它们包装在try-catchblock中,并在发生异常时回滚。考虑以下场景:@TransactionalpublicvoidsaveAB(Aa,Bb){saveA(a);saveB(b);}@TransactionalpublicvoidsaveA(Aa){dao.saveA(a);}@TransactionalpublicvoidsaveB(Bb){dao.saveB(b);}假设saveAB被另一个对象调用并且在saveB中发生异常,所以saveA成功完成但saveB没有。据我所知,即使sa

java - JPA+Hibernate+@Transactional注解的spring事务支持的奇怪行为

我在相对简单的用例上发现了非常奇怪的行为,可能因为对spring@Transactional性质的了解不深,我无法理解它,但这很有趣。我有一个简单的用户dao,它扩展了springJpaDaoSupport类并包含标准保存方法:@TransactionalpublicUsersave(Useruser){getJpaTemplate().persist(user);returnuser;}如果在我向同一个类添加新方法之前工作正常:UsergetSuperUser(),此方法应该返回isAdmin==true的用户,如果数据库中没有super用户,方法应该创建一个。这就是它的样子:pub

java - 打包应用程序时获取包 org.springframework.transaction.annotation 不存在错误

我是Spring世界的新手。我使用Spring3.2和Hibernate4.1.9开发了一个DAO,但我注意到一件奇怪的事情。除spring-aop模块外,所有使用的Spring相关的依赖都属于3.2.1版本。对于此模块,我必须使用3.2.0版本,因为如果我在dao类实现中使用3.2.1,则找不到此导入:org.springframework.transaction.annotation.Transactional这是我原来的pom.xml文件(效果很好):4.0.0org.andrea.myexampleHibernateOnSpring0.0.1-SNAPSHOTjarHibern

java - 如何避免在服务类中重复 DAO 方法? @Transactional 注释 DAO 和服务类 - 这是可以接受的做法吗?

我知道最佳实践是同时拥有服务层和Dao层,并在服务层添加@Transactional注解。但在我的例子中,这意味着我的大部分服务类都是为了重复DAO方法而创建的……这很烦人。例如。publicinterfaceFooDAO{publicListlist(intcathegoryId);publicListlist(intcathegoryId,intownerId);}@Service@TransactionalpublicclassFooService{protected@AutowiredFooDAOdao;publicListlist(intcathegoryId){dao.li

java - SQL Server 2012 上的 "New request is not allowed to start because it should come with valid transaction descriptor"

编辑:找到解决方案,往下看。我们有一个Web应用程序,它调用存储在SqlServer2012数据库中的View的选择。此查询因错误而失败"Newrequestisnotallowedtostartbecauseitshouldcomewithvalidtransactiondescriptor"此问题仅发生在单个客户数据库上,在所有其他客户模式上执行的相同查询运行正常。在SSMS中对受影响模式自行执行的查询运行正常,仅在该特定模式上的应用程序中失败。SELECT语句是这样的:selectdistinctclienti.numeroCliente,clienti.ragioneSocia

java - @Transactional 在 CDI Bean 的基类中被忽略

具有以下相当简单的代码和正确配置的基于JTA的持久性上下文:abstractclassAbstractRepository{@PersistenceContextprotectedEntityManagerem;@Transactionalpublicsynchronizedvoidpersist(Eentity){em.persist(entity);em.flush();}}@ApplicationScopedclassMyEntityRepositoryextendsAbstractRepository{}我在调用MyEntityRepository.persist()时遇到以下

java - 通用 map 中的 Jackson De/Serializing Date-to-String-to-Date

有许多Jackson与java.util.Date代码之间的示例,但它们似乎都利用了POJO注释。我有我希望反/序列化为JSON的通用标量映射。这是当前的解串器设置;很简单:publicclassJSONUtils{static{DateFormatdf=newSimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");mapper=newObjectMapper();mapper.configure(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS,true);mapper.setDateFormat(

java - Spring 数据 : rollback transaction on retry

有一个实体:@EntityclassA{...@Versionintversion;}A以乐观方式实现的实例更新:@Transactional(rollbackFor={StaleStateException.class})@Retryable(value={StaleStateException.class})publicvoidupdateA(){Aa=findA();Bb=newB();//Update"a"somehowa.update();//"b"issavedoneachretry!save(b);}正如评论中所述,当StaleStateException发生时,事务似乎

java - Guice @Transactional 不启动事务

我已经开始使用Guice方法级事务,如所述here.我有这样的消息@InjectprivateEntityManagerentityManager;@TransactionalpublicUserSessioncreateSession(Useruser,Stringbrowser){UserSessionsession=newUserSession(user,browser);entityManager.persist(session);}从简短的描述来看,我认为wis应该足够了。但是我得到一个错误,因为没有交易开始。仅当我自己开始并提交时它才有效。该对象是由Guice在我的应用程序