本人最近搭建一个框架,Spring2.5+JPA(Hibernate3.3)+MySql5 在所有jar包,配置文件都配置好之后,无法将实体类持久化至数据库,经过一番搜索,将问题定位在事务上面,可是事务我已经都配置好了,不知道哪里配置有问题,请各位专家帮忙spring-config-jpa.xml 文件<bean id = "dataSource" lazy-init="true"
class = "org.apache.commons.dbcp.BasicDataSource"
p:driverClassName="com.mysql.jdbc.Driver"
p:url="jdbc:mysql://localhost:3306/ycf?useUnicode=true&characterEncoding=GBK"
p:username="root"
p:password=""
p:maxActive="5"
p:minIdle="1"/>
<bean id="jpaDialect" class="org.springframework.orm.jpa.vendor.HibernateJpaDialect"/>
<bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="true"></property>
<property name="generateDdl" value="true"></property>
<property name="database">
<util:constant static-field="org.springframework.orm.jpa.vendor.Database.MYSQL"/>
</property>
</bean>
<!-- JPA primary EntityManagerFactory -->
<bean id="entityManagerFactory" lazy-init="true"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
p:persistenceUnitName="ycf"
p:jpaVendorAdapter-ref="jpaVendorAdapter"
p:jpaDialect-ref="jpaDialect"
p:dataSource-ref="dataSource"/>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"
p:entityManagerFactory-ref="entityManagerFactory"/>
<tx:annotation-driven mode="aspectj" />spring-config-mvc.xml 文件<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" p:order="0">
<property name="interceptors">
<list>
<bean class="org.springframework.web.servlet.mvc.WebContentInterceptor" p:cacheSeconds="0" />
</list>
</property>
</bean>
<context:component-scan base-package="com.sundancer.core.web.controller" />
<context:component-scan base-package="com.sundancer.core.service" />
<context:component-scan base-package="com.sundancer.core.dao" />
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
@Repository
@Transactional
public class UserDAO extends JPABaseDAO{
protected transient final Logger logger = Logger.getLogger(getClass());
// property constants
public static final String PASSWORD = "password";
public static final String USERNAME = "username";
@PersistenceContext
private EntityManager em; @Transactional
public void save(User entity) {
logger.info("saving User instance");
try {
System.out.println(entity.getUsername());
this.getJpaTemplate().persist(entity);
logger.info("save successful");
} catch (RuntimeException re) {
logger.error("save failed", re);
re.printStackTrace();
throw re;
}
}persistence.xml 文件 <?xml version="1.0" encoding="UTF-8"?>
<persistence 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_1_0.xsd" version="1.0">
<persistence-unit name="ycf" transaction-type="RESOURCE_LOCAL">
</persistence-unit>
</persistence>
class = "org.apache.commons.dbcp.BasicDataSource"
p:driverClassName="com.mysql.jdbc.Driver"
p:url="jdbc:mysql://localhost:3306/ycf?useUnicode=true&characterEncoding=GBK"
p:username="root"
p:password=""
p:maxActive="5"
p:minIdle="1"/>
<bean id="jpaDialect" class="org.springframework.orm.jpa.vendor.HibernateJpaDialect"/>
<bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="true"></property>
<property name="generateDdl" value="true"></property>
<property name="database">
<util:constant static-field="org.springframework.orm.jpa.vendor.Database.MYSQL"/>
</property>
</bean>
<!-- JPA primary EntityManagerFactory -->
<bean id="entityManagerFactory" lazy-init="true"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
p:persistenceUnitName="ycf"
p:jpaVendorAdapter-ref="jpaVendorAdapter"
p:jpaDialect-ref="jpaDialect"
p:dataSource-ref="dataSource"/>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"
p:entityManagerFactory-ref="entityManagerFactory"/>
<tx:annotation-driven mode="aspectj" />spring-config-mvc.xml 文件<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" p:order="0">
<property name="interceptors">
<list>
<bean class="org.springframework.web.servlet.mvc.WebContentInterceptor" p:cacheSeconds="0" />
</list>
</property>
</bean>
<context:component-scan base-package="com.sundancer.core.web.controller" />
<context:component-scan base-package="com.sundancer.core.service" />
<context:component-scan base-package="com.sundancer.core.dao" />
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
@Repository
@Transactional
public class UserDAO extends JPABaseDAO{
protected transient final Logger logger = Logger.getLogger(getClass());
// property constants
public static final String PASSWORD = "password";
public static final String USERNAME = "username";
@PersistenceContext
private EntityManager em; @Transactional
public void save(User entity) {
logger.info("saving User instance");
try {
System.out.println(entity.getUsername());
this.getJpaTemplate().persist(entity);
logger.info("save successful");
} catch (RuntimeException re) {
logger.error("save failed", re);
re.printStackTrace();
throw re;
}
}persistence.xml 文件 <?xml version="1.0" encoding="UTF-8"?>
<persistence 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_1_0.xsd" version="1.0">
<persistence-unit name="ycf" transaction-type="RESOURCE_LOCAL">
</persistence-unit>
</persistence>
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货