Konnte nicht geöffnet JPA EntityManager für die Transaktion im Frühjahr Testen
Ich habe ein java-Projekt mit Spring 3.0 , JPA 2.0 mit MyEclipse IDE
Versuchen, zu konvertieren einige grundlegende dao-integration-tests auf den Frühling und haben ein paar Fragen. Hier ist mein setup:
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;
}
}
}
Unit-Test
@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>
Zuerst erhielt ich diese
Wert '2.0' des Attributs 'version' von element 'Hartnäckigkeit' ist nicht gültig
Also das Lesen einem anderen post vorgeschlagen, ändern Sie dies in "1.0"
und jetzt erhalten
java.lang.IllegalStateException: Fehler beim laden der Datei ApplicationContext
Dass Problem wurde gelöst, mit dem < provider > - tag jedoch noch nicht behoben, mein Problem:
org.springframework.die Transaktion.CannotCreateTransactionException: Konnte nicht geöffnet JPA EntityManager für die Transaktion; nested exception Exception [EclipseLink-4021] (Eclipse Persistence Services - 1.0.2 (Build 20081024)): org.eclipse.die Persistenz.Ausnahmen.DatabaseException
Ausnahme Beschreibung: Nicht in der Lage zu erwerben eine Verbindung von Fahrer [null], user [null] und URL [null].
Meine Sorge ist, dass durch die Herabstufung der version nicht. zu "1.0", dass ich auch mit Blick auf das Problem der Kompatibilität innerhalb dieses Stacks. Ich habe non-spring Versionen dieser tests arbeiten, also irgendwelche Ideen auf, wo ich gegangen bin, falsch geschätzt.
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese sind JPA-2.0-Eigenschaften:
Also, wenn Sie wieder eingeschaltet, um 1.0, würden Sie wahrscheinlich wollen:
Aber dann würde ich empfehlen, zu lösen, "das andere problem" und bleiben mit 2.0
Hier ist ein Beispiel von JPA 2.0 über EclipseLink, das funktioniert ( beachten Sie
persistence version="2.0"
):Werfen Sie einen Blick auf die Beispiel in voller