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

InformationsquelleAutor MikeW | 2011-10-12
Schreibe einen Kommentar