打開JPA EntityManager的事務我使用Spring 3.0,JPA 2.0 MyEclipse的IDE無法在彈簧試驗
嘗試一些基本的DAO集成測試轉換成春,遇到了一些問題的Java項目。這裏是我的設置:
LevelDAO
public class LevelDAO extends JpaDaoSupport implements ILevelDAO
{
public void save(Level entity) {
logger.info("saving Level instance");
try {
getJpaTemplate().persist(entity);
logger.info("save successful");
} catch (RuntimeException re) {
logger.error("save failed", re);
throw re;
}
}
}
單元測試
@Transactional
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "classpath:applicationContext.xml"})
@TransactionConfiguration(transactionManager="transactionManager", defaultRollback=false)
public class LevelDaoImplTests {
LevelDAO levelDao;
@Test
public void shouldSaveNewLevels() {
levelDao= new LevelDAO();
Level l = new Level();
l.setName = "test";
levelDao.save(l);
}
}
的persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="t1" transaction-type="RESOURCE_LOCAL">
<provider>
org.eclipse.persistence.jpa.PersistenceProvider
</provider>
<class>com.nlg.model.Level</class>
<properties>
<property name="javax.persistence.jdbc.driver"
value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url"
value="jdbc:mysql://myserver.rds.amazonaws.com:3306/" />
<property name="javax.persistence.jdbc.user" value="myuser" />
<property name="javax.persistence.jdbc.password" value="mypass" />
</properties>
</persistence-unit>
的applicationContext.xml
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="t1" />
</bean>
<bean id="transactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory"
ref="entityManagerFactory" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
<bean
id="LevelDAO" class="com.nlg.model.LevelDAO">
<property name="entityManagerFactory"
ref="entityManagerFactory" />
</bean>
起初我收到這個
值 '2.0' 元素 '持久性' 的屬性 '版本' 是無效
所以閱讀另一篇建議將其改爲「1.0」的帖子
現在收到
java.lang.IllegalStateException:無法加載的ApplicationContext
這個問題是與<提供商>標籤但是沒有固定我的問題解決了:
org.springframework.transaction .CannotCreateTransactionException:無法打開JPA EntityManager進行事務處理;嵌套異常是異常[EclipseLink-4021](Eclipse持久性服務 - 1.0.2(內部版本20081024)):org.eclipse.persistence.exceptions.DatabaseException 異常說明:無法從驅動程序[null]獲取連接,用戶[null ]和URL [null]。
我的問題是,通過降級版本號。到「1.0」,我也忽略了這個堆棧中的兼容性問題。我有這些測試的非春季版本的工作,所以任何想法,我出錯的地方讚賞。
由於