- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Hibernate session 中遇到一个常见错误:javax.persistence.TransactionRequiredException:执行更新/删除
查询。
我找到了一个解决方案,使我的测试类扩展 AbstractTransactionalJUnit4SpringContextTests
但我不明白为什么有必要。
我尝试在我的项目上设置junit(4.11版本)测试。
_
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:config/ioc/application-context-spring-test.xml" })
@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class })
@TransactionConfiguration(transactionManager = "myTxManager")
@Transactional
public class UserPreferenceDAOTest extends AbstractTransactionalJUnit4SpringContextTests {
@Autowired
private UserPreferenceDAO dao;
@Test
@Transactional
public void test() {
try {
SQLQuery query = dao.createSQLQuery("SELECT 1 from dual");
query.uniqueResult();
} catch (Exception e) {
e.printStackTrace();
fail();
}
}
}
UserPreferenceDAO 已实例化。 query.uniqueResult();
行抛出 javax.persistence.TransactionRequiredException
异常。
包含数据库访问配置:
<!-- To precise the persistence configuration name file -->
<bean id="persistenceUnitManager" class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager">
<property name="persistenceXmlLocations">
<list>
<value>classpath*:META-INF/persistence-web.xml</value>
</list>
</property>
<property name="defaultDataSource" ref="dataSource" />
</bean>
<!-- EntityManagerFactory definition : JPA one -->
<bean id="myEmf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitManager" ref="persistenceUnitManager" />
<property name="persistenceUnitName" value="myPersistenceUnit" />
</bean>
<!-- Transaction Manager definition : JPA one-->
<bean id="myTxManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="myEmf" />
</bean>
<!-- Enable the annotation usage (bean injection for instance) -->
<context:annotation-config />
<!-- Enable annotation usage for transaction -->
<tx:annotation-driven transaction-manager="myTxManager" proxy-target-class="false"/>
<!-- Enterprise layer's dependencies -->
<!-- UserPreferenceDAO bean statement here -->
<import resource="classpath:ioc/0-model-enterpriselayer-dependencies.xml"/>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@myurl:1522:TD11P15A" />
<property name="username" value="user" />
<property name="password" value="pwd" />
</bean>
_
<persistence>
<persistence-unit name="myPersistenceUnit" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<!-- with Annotations -->
<class>com.airfrance.padme.server.entity.UserPreference</class>
<!-- etc... (all my entities) -->
<properties>
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
</properties>
</persistence-unit>
</persistence>
我发现的大多数教程都没有使用这个 AbstractTransactionalJUnit4SpringContextTests
类。示例如下:http://www.concretepage.com/spring-4/spring-4-junit-4-annotation-example
我哪里错了?
谢谢
最佳答案
根据文档AbstractTransactionalJUnit4SpringContextTests包括以下测试执行监听器:
如果您不想从 AbstractTransactionalJUnit4SpringContextTests
扩展,但仍希望事务行为,只需将 TransactionalTestExecutionListener
添加到您的监听器:
@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, TransactionalTestExecutionListener.class})
TransactionalTestExecutionListener
的 javadoc:
TestExecutionListener that provides support for executing tests within test-managed transactions by honoring Spring's @Transactional annotation.
关于java - JUnit-org.hibernate.SessionException : Session is closed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30349265/
public List loadExaminations(int pID) { session = sessionFactory.openSession(); session.setF
我正在尝试使用 JSONB 导出以下实体: Prozessschritt 类: import lombok.*; import javax.persistence.*; import java.uti
我在 Hibernate session 中遇到一个常见错误:javax.persistence.TransactionRequiredException:执行更新/删除 查询。 我找到了一个解决方案
我正在使用 java + spring + hibernate + oracle 开发应用程序。当我在我的 dispatcher-servlet.xml 文件中添加以下属性时。 true 抛出如下异常
我是 Hibernate 的新手,在遇到这个问题之前,我一直在自己编程。我试图将一个对象添加到数据库中,然后从数据库中检索该对象。我曾尝试在线寻求帮助,但未能解决此错误。任何帮助,将不胜感激。我得到的
我对此做了很多研究,但运气不佳,但所有答案都倾向于指向配置文件中的 session 上下文设置。奇怪的是,我第一次访问该页面时就获得了一个 session 连接(因此,一个成功的结果集),但是当我重新
我是一名优秀的程序员,十分优秀!