我的 Web 应用程序使用的是 Tomcat 6.0.18 和 Spring 3.0.5 以及 eclipselink 2.0.1 和 javax.persistence 2.0.0,SQL Server 数据库。我无法弄清楚配置,也无法找到具有此类配置的工作示例。我尝试将 loadTimeWeaver 的属性添加到 entityManagerFacotory 中,但它破坏了 Spring 3 中的 AutoWired 注释,如下面的 applicationContext.xml 所示:
<context:load-time-weaver/>
在 appname-servlet.xml 中:
但是当我禁用 LoadTimeWeaver 时,我的应用程序可以从 JPA 代码创建数据库,但无法将数据持久保存到数据库中。
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceXmlLocation" value="classpath:persistence.xml" />
<property name="dataSource" ref="dataSource" />
<property name="persistenceUnitName" value="restfulPU" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter">
<property name="showSql" value="true"/>
<property name="generateDdl" value="true"/>
<property name="databasePlatform" value="org.eclipse.persistence.platform.database.SQLServerPlatform"/>
</bean>
</property>
<property name="jpaDialect">
<bean class="org.springframework.orm.jpa.vendor.EclipseLinkJpaDialect" />
</property>
<property name="jpaPropertyMap">
<props>
<prop key="eclipselink.weaving">false</prop>
</props>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
Persistence.xml
<persistence-unit name="restfulPU" transaction-type="RESOURCE_LOCAL">
<class>com.generalform.eclipselink.model.Todo</class>
<properties>
<!-- EclipseLink should create the database schema automatically -->
<property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
<property name="eclipselink.ddl-generation.output-mode"
value="database" />
</properties>
如果您能指出有关将 EclipseLink 集成到 Spring 3 和 Tomcat 中的指南或教程,我将不胜感激。