Hallo miteinander,
ich bin Java-Neuling und beschäftige mich derzeit mit Spring und JPA. Dabei bin ich schon ziemlich zu Beginn auf ein merkwürdiges Problem gestoßen, welche ich trotz zahlreicher Recherchen (Google, Bücher, Foren) nicht lösen konnte.
Ich möchte aus einem einfachen Applikationkontext heraus via Spring und JPA auf einer MySQL-DB arbeiten, aber es werden schlichtweg keine Datensätze in die Tabellen abgelegt!
Folgende Merkmale sind dabei festzustellen:
- Das Programm läuft fehlerfrei durch
- Die notwendigen Tabellen werden entsprechend erzeugt
- Den Entitäten werden entsprechend IDs zugeordnet
- Der ID-Inkrementwert wird in der DB festgehalten
Zur meiner Umgebung:
- Spring 2.5
- MySQL 5.*
- Tabellentyp InnoDB
- die Methode, welche die Testdaten erzeugen soll, ist mit @Transactional annotiert
Meine Konfigurationen:
[XML]
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
Index of /schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
Index of /schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
Index of /schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
Index of /schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<!-- Enable processing of @PersistenceContext and @PersistenceUnit -->
<context:annotation-config/>
<!-- Enable transaction configuration with @Transactional -->
<tx:annotation-driven transaction-manager="transactionManager"/>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="BarPU"/>
</bean>
<bean id="jpaTemplate" class="org.springframework.orm.jpa.JpaTemplate">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<!-- Configure transaction manager for JPA-->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="drinkDao" class="Bar.dao.jpa.JpaDrinkDao">
<property name="jpaTemplate" ref="jpaTemplate" />
</bean>
<bean id="guestDao" class="Bar.dao.jpa.JpaGuestDao">
<property name="jpaTemplate" ref="jpaTemplate" />
</bean>
</beans>
[/XML]
[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="BarPU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>Bar.entities.Drink</class>
<class>Bar.entities.Guest</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://127.0.0.1/Bar"/>
<property name="javax.persistence.jdbc.password" value=""/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="eclipselink.ddl-generation" value="create-tables"/>
</properties>
</persistence-unit>
</persistence>
[/XML]
ich bin Java-Neuling und beschäftige mich derzeit mit Spring und JPA. Dabei bin ich schon ziemlich zu Beginn auf ein merkwürdiges Problem gestoßen, welche ich trotz zahlreicher Recherchen (Google, Bücher, Foren) nicht lösen konnte.
Ich möchte aus einem einfachen Applikationkontext heraus via Spring und JPA auf einer MySQL-DB arbeiten, aber es werden schlichtweg keine Datensätze in die Tabellen abgelegt!
Folgende Merkmale sind dabei festzustellen:
- Das Programm läuft fehlerfrei durch
- Die notwendigen Tabellen werden entsprechend erzeugt
- Den Entitäten werden entsprechend IDs zugeordnet
- Der ID-Inkrementwert wird in der DB festgehalten
Zur meiner Umgebung:
- Spring 2.5
- MySQL 5.*
- Tabellentyp InnoDB
- die Methode, welche die Testdaten erzeugen soll, ist mit @Transactional annotiert
Meine Konfigurationen:
[XML]
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
Index of /schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
Index of /schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
Index of /schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
Index of /schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<!-- Enable processing of @PersistenceContext and @PersistenceUnit -->
<context:annotation-config/>
<!-- Enable transaction configuration with @Transactional -->
<tx:annotation-driven transaction-manager="transactionManager"/>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="BarPU"/>
</bean>
<bean id="jpaTemplate" class="org.springframework.orm.jpa.JpaTemplate">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<!-- Configure transaction manager for JPA-->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="drinkDao" class="Bar.dao.jpa.JpaDrinkDao">
<property name="jpaTemplate" ref="jpaTemplate" />
</bean>
<bean id="guestDao" class="Bar.dao.jpa.JpaGuestDao">
<property name="jpaTemplate" ref="jpaTemplate" />
</bean>
</beans>
[/XML]
[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="BarPU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>Bar.entities.Drink</class>
<class>Bar.entities.Guest</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://127.0.0.1/Bar"/>
<property name="javax.persistence.jdbc.password" value=""/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="eclipselink.ddl-generation" value="create-tables"/>
</properties>
</persistence-unit>
</persistence>
[/XML]