我将Spring 3.2.4与JavaFX结合使用,并希望实现一种方法,其中操作将在事务中执行。我在控制器中的代码如下所示:
@Transactional(rollbackFor = { ServiceException.class,
ValidationException.class })
public void registerVolunteer(User user, Volunteer volunteer)
throws ServiceException, ValidationException {
User ret = userService.create(user);
volunteer.setUser(ret);
volunteerService.untransactedCreate(volunteer);
}
以及我的应用程序上下文:
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
<!-- Transaction Manager -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
尝试运行时,我收到以下错误消息:
Controller method "onBackClicked" not found.
/home/workspace/project/NewProject/target/classes/fxml/RegisterVolunteer.fxml:69
at javafx.fxml.FXMLLoader$Element.processEventHandlerAttributes(FXMLLoader.java:497)
at javafx.fxml.FXMLLoader$ValueElement.processEndElement(FXMLLoader.java:594)
at javafx.fxml.FXMLLoader.processEndElement(FXMLLoader.java:2472)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2177)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2069)
at org.impactvolunteers.management.FXMLSpringLoader.load(FXMLSpringLoader.java:97)
at org.impactvolunteers.management.FXMLSpringLoader.load(FXMLSpringLoader.java:81)
at org.impactvolunteers.management.gui.Screen.init(Screen.java:50)
at org.impactvolunteers.management.gui.ScreensController.init(ScreensController.java:43)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
...
该方法存在。删除注释,或者将方法从public更改为private,或者从配置中删除bean,程序就会运行,但事务注释根本不起作用。删除代理目标会导致另一个错误。
如果您谈论的是@Transactional
,那么它用于回滚当前事务发生。
这主要用于制作测试用例,让我向您展示:
RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration("file:src/main/webapp/WEB-INF/dispatcher-servlet.xml")
@TransactionConfiguration(transactionManager = "txManager",defaultRollback = true)
@Transactional
public class AddVendorProcessorTest{
// Your code
}
现在,在这里的TransactionConfiguration中,从这里获取一个XML文件:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="org.postgresql.Driver"/>
<property name="url" value="jdbc:postgresql://localhost:5432/db"/>
<property name="username" value="postgres"/>
<property name="password" value="pwd"/>
<property name="validationQuery" value="SELECT 1"/>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="packagesToScan" value="com.domain"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.generate_statistics">true</prop>
</props>
</property>
</bean>
<!-- Transaction Manager -->
<bean id="txManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:annotation-driven transaction-manager="txManager" />
它会自动获取txManager
bean。
仍然如果任何查询POST我。
我正在尝试在数据库中保存对象。正在执行代码并创建实体的Id,但实体未持久化到数据库(未插入行): 从三行(beginTransation,flush,commit)中删除注释解决了问题,但是为什么注释在这里不起作用呢? spring XML: POM xml文件:
根据我的理解,在methodB()中,我们使用someManager保存一个对象,并调用另一个函数callToSomeOtherServer()。所以这是上层方法中事务的一部分。如果callToSomeOtherServer()失败并抛出someException,整个事务应该回滚,保存的对象不应该在DB中反映。 但这对我不起作用,对象反映在DB中。有人能帮忙让我明白为什么它不起作用吗?
问题内容: 之间有什么区别? 在整个类中添加“ @Transactional”注释 为每个方法添加“ @Transactional”注释? 使用spring和Hibernate吗? 问题答案: 基本上,如果您用所有方法注释该类,则将是事务性的。如果您不这样做,则可以仅将其标注为所需的方法。此外,你可以为每个方法指定不同的属性,如,,,…
在我们的一个项目中,我们遇到了一个问题,Spring忽略了事务注释,然后失败了,出现了以下错误。 启动ApplicationContext时出错。要显示条件报告,请在启用“调试”的情况下重新运行应用程序。2018-09-13 15:05:18406错误[主]组织。springframework。靴子SpringApplication应用程序运行失败组织。springframework。道。Inva
我正在阅读使用Spring框架的事务管理。在第一个组合中,我使用Spring Hibernate和Hibernate的API来控制事务(Hibernate API)。接下来,我想使用注释进行测试,它确实起了作用。 我感到困惑的是: > JPA、JTA、Hibernate是否有自己的事务管理方式。举个例子,考虑如果我使用Spring Hibernate,在那种情况下,你会使用“JPA”事务吗? 就像
我在玩和 这是我的应用程序上下文文件 以下是我的Java类 HelloWorld1。JAVA 住址JAVA 这里是我尝试运行东西的地方-应用程序。JAVA 我一直在得到这个异常-理想情况下我不应该,因为我已经定义了id为'address1'的@Qualifier注释-所以它不应该抛出异常 警告:上下文初始化过程中遇到的异常-取消刷新尝试:org.springframework.beans.fact