Tag: transactional

哪个SessionFactory应该用于transactionManager?

PROPAGATION_REQUIRED PROPAGATION_REQUIRED PROPAGATION_REQUIRED PROPAGATION_REQUIRED PROPAGATION_SUPPORTS,readOnly 我有2个数据源HRappsdao和projectdao,两个都使用不同的sessionFactory。 在这种情况下,我的transactionmanager应该使用哪个sessionfactory? (hrappsdao或projectdao)? editted //my HRappsdao using same

Hibernate @Transactional Sessions

对不起,我再说一遍这里的问题了。 我有Transactional注释的问题。 我有类,接口Dao,DaoImpl和Service,ServiceImpl。 这是我的conf文件 <!– –> classpath:/config.properties classpath:/jdbc.properties <!– –> classpath:hibernateConfig.xml org.hibernate.cfg.AnnotationConfiguration org.hsqldb.jdbcDriver true org.hibernate.dialect.MySQLInnoDBDialect UTF-8 thread true 当我将@Transactional注释放到DaoImpl时,所有测试都可以正常工作,Maven编译我的应用程序。 但是当我将它部署到Tomcat并尝试使用浏览器中的Dao方法时,我有Stack Trace。 org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here org.springframework.orm.hibernate3.SpringSessionContext.currentSession(SpringSessionContext.java:63) org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:622) com.dataart.masternoy.dao.imp.UserDAOImpl.existUserByLoginEmail(UserDAOImpl.java:35) com.dataart.masternoy.service.imp.UserServiceImpl.existUserByLoginMail(UserServiceImpl.java:44) com.dataart.masternoy.controller.FirstPageController.isValid(FirstPageController.java:46) com.dataart.masternoy.controller.FirstPageController.ConfirmRegister(FirstPageController.java:101) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) […]

Spring Transactional注释,隔离不适用于READ_UNCOMMITTED

我在Java中有一个方法,它由spring Transactional注释包装。 我里面有2个操作,一个是delete ,另一个是insert 。 我的插入语句必须依赖于第一个操作(即delete ),但是由于第一个操作尚未提交,我的插入失败(唯一约束)。 但有趣的是,通常在同一个事务中,我应该能够在同一个事务中读取/查看未经授权的操作(我的旧专有框架能够做到这一点),但这不适用于我的场景,第二个插入仍然失败,因为它看到数据尚未删除。 我尝试使用隔离READ_UNCOMMITTED ,但它不起作用。 我必须将这两个操作放在同一个事务中,因为任何一个失败都应该回滚两个操作,我不能提交第一个操作然后继续第二个操作。 我怎么能在Spring框架中做到这一点?

Jersey,Guice和Hibernate – EntityManager线程安全

我在我的应用程序中以相同的方式使用了本教程: http : //www.benmccann.com/hibernate-with-jpa-annotations-and-guice/ 我的应用程序是JAX-RS Web服务,它将接收许多并发请求并对数据库进行更新。 GenericDAOImpl.java实现: public class GenericDAOImpl implements GenericDAO { @Inject protected EntityManager entityManager; private Class type; public GenericDAOImpl(){} public GenericDAOImpl(Class type) { this.type = type; } @Override public void save(T entity) { entityManager.getTransaction().begin(); entityManager.persist(entity); entityManager.getTransaction().commit(); } } 如果2个并发线程试图保存实体,我得到 java.lang.IllegalStateException: Transaction already active 如果我评论交易,保存效果很好。 我试过用 @Inject protected Provider entityManagerProvider; 要么 @Inject protected […]

Spring @Transactional Annotation:自我调用

我知道当从同一个类内部调用事务方法时,它不会在事务中运行。 Spring为事务方法创建一个代理,并将它们包装在try-catch块中,并在发生exception时回滚。 请考虑以下情形: @Transactional public void saveAB(A a, B b) { saveA(a); saveB(b); } @Transactional public void saveA(A a) { dao.saveA(a); } @Transactional public void saveB(B b) { dao.saveB(b); } 假设从另一个对象调用saveAB并在saveB中发生exception,因此saveA成功完成但saveB没有成功。 据我所知,即使saveA和saveB不是事务性的(因为它们是从同一个对象调用的),因为saveAB是事务性的,它仍然应该回滚。 我不明白为什么人们说自我调用打破了交易? 只要调用方法是事务性的,不应该按预期工作吗? 这里有什么我想念的吗?

Spring @Transaction没有启动事务

我正在使用Spring 3和Hibernate 3.我正在尝试配置Spring声明式事务,但无论我尝试什么,Spring事务都没有开始。 这是我的配置 文件:applicationContext-hibernate.xml … ….. 我有一个ServiceLocatorImpl类,它实现了ServiceLocator接口 @Service(“serviceLocator”) @Transactional public class ServiceLocatorImpl implements ApplicationContextAware, Serializable, ServletContextAware, ServiceLocator { public ResultObject executeService( Map objArgs ) { if(TransactionSynchronizationManager.isActualTransactionActive()) { LOGGER.debug(“ServiceLocator:executeService – Active transaction found”); } else { LOGGER.error(“No active transaction found”); } …… } …. } 在我看来,我所有的配置都是正确的。 但是,当调用executeService方法时,TransactionSynchronizationManager.isActualTransactionActive()始终返回false。 请帮我解决这个问题。 如果需要更多信息,请与我们联系。 更新:我已将ServiceLocator连接到其他类之一,如下所示: @Autowired private ServiceLocator serviceLocator; // […]

声明式事务(@Transactional)不适用于Spring中的@Repository

我正在尝试使用Spring,JPA和嵌入式H2数据库进行简单的应用程序。 最近我遇到了声明性交易这个奇怪的问题。 如果我使用@Repository注释自动assembly我的DAO,它们就不会提交。 更具体地说,我在flush上获得exception: javax.persistence.TransactionRequiredException: Exception Description: No transaction is currently active 这是我的设置: persistence.xml中 org.eclipse.persistence.jpa.PersistenceProvider false 实体 @Entity @Table(name = “Professors”) public class Professor { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; private String name; public Professor() { } public Professor(String name) { this.name = name; } } DAO @Repository public class JpaDao { @PersistenceContext […]

Spring多个@Transactional数据源

在我的服务层,我可以使用@Transactional(name=”transactionManager2″); 如果我有多个事务管理器,以确定我使用哪个事务管理器?

事务性保存而不调用更新方法

我有一个用@Transactional注释的方法。 我从Oracle DB中检索一个对象,更改一个字段,然后从该方法返回。 我忘了保存对象,但发现无论如何数据库都会更新。 的applicationContext 我的方法 @Transactional public void myMethod(long id) { MyObject myObj = dao.getMstAttributeById(id); myObj.setName(“new name”); //dao.update(myObj); } 我的问题是为什么MyObject被持久化到数据库?