繁体   English   中英

保存方法不持久化实体对象Spring Data JPA

[英]Save method not persisting entity object Spring Data JPA

我正在将当前代码从休眠和mybatis迁移到spring数据jpa,并使用现有应用程序配置spring数据并尝试执行某些操作。

当我尝试使用save(T t)持久化实体时,它没有返回任何异常,并返回了相同的实体对象作为结果,但是没有持久化。

Persistence.xml

<context:annotation-config />

<tx:annotation-driven />

<bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource"
    p:driverClassName="com.mysql.jdbc.Driver" p:url="${db.url}"
    p:username="${db.username}" p:password="${db.password}" />

<!-- Hibernate 4 SessionFactory Bean definition -->
<bean id="sessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="packagesToScan">
        <list>
            <value>com.moneyhaul.dao.model</value>
        </list>
    </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
        </props>
    </property>
</bean>

<!--<tx:annotation-driven transaction-manager="transactionManager" />-->
<!--
          Configure Spring Data JPA and set the base package of the
          repository interfaces
        -->
<jpa:repositories base-package="com.moneyhaul.repositary"/>


    <!-- Create default configuration for Hibernate -->
    <bean id="hibernateJpaVendorAdapter"
          class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/>

    <!-- Configure the entity manager factory bean -->
    <bean id="entityManagerFactory"
          class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="jpaVendorAdapter" ref="hibernateJpaVendorAdapter"/>
        <!-- Set JPA properties -->
        <property name="jpaProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
                <prop key="javax.persistence.schema-generation.database.action">none</prop>
                <prop key="hibernate.ejb.use_class_enhancer">false</prop>
            </props>
        </property>
        <!-- Set base package of your entities -->
        <property name="packagesToScan" value="com.moneyhaul.dao.model"/>
        <!-- Set share cache mode -->
        <property name="sharedCacheMode" value="ENABLE_SELECTIVE"/>
        <!-- Set validation mode -->
        <property name="validationMode" value="NONE"/>

    </bean>

    <!-- Configure the transaction manager bean -->
    <bean id="transactionManagerJpa"
          class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory"/>
    </bean>

    <!-- Enable annotation driven transaction management -->
    <tx:annotation-driven transaction-manager="transactionManagerJpa"/>









<bean id="transactionManager"
    class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

<!-- Mybatis session factory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"
    p:dataSource-ref="dataSource" p:configLocation="WEB-INF/mybatis/sqlmap-config.xml" />

<bean id="caarmoMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"
    p:mapperInterface="com.caarmo.mapper.CaarmoMapper"
    p:sqlSessionFactory-ref="sqlSessionFactory" />

<bean id="paymentMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"
    p:mapperInterface="com.caarmo.mapper.PaymentMapper"
    p:sqlSessionFactory-ref="sqlSessionFactory" />

<bean id="reportingMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"
    p:mapperInterface="com.caarmo.mapper.ReportingMapper"
    p:sqlSessionFactory-ref="sqlSessionFactory" />

<bean id="reportingTrendsMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"
    p:mapperInterface="com.caarmo.mapper.ReportingTrendsMapper"
    p:sqlSessionFactory-ref="sqlSessionFactory" />

<bean id="customerDBMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"
    p:mapperInterface="com.caarmo.mapper.CustomerDBMapper"
    p:sqlSessionFactory-ref="sqlSessionFactory" />

<bean id="vehicleDBMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"
    p:mapperInterface="com.caarmo.mapper.VehicleDBMapper"
    p:sqlSessionFactory-ref="sqlSessionFactory" />

<bean id="geomaticsMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"
    p:mapperInterface="com.caarmo.mapper.GeomaticsMapper"
    p:sqlSessionFactory-ref="sqlSessionFactory" />

<bean id="serviceCenterMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"
    p:mapperInterface="com.caarmo.mapper.ServiceCenterMapper"
    p:sqlSessionFactory-ref="sqlSessionFactory" />

<bean id="moneyhaulMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"
    p:mapperInterface="com.moneyhaul.mapper.MoneyHaulMapper"
    p:sqlSessionFactory-ref="sqlSessionFactory" />

<bean id="mhGeomaticsMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"
    p:mapperInterface="com.moneyhaul.mapper.MHGeomaticsMapper"
    p:sqlSessionFactory-ref="sqlSessionFactory" />

<bean id="configurationMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"
    p:mapperInterface="com.caarmo.mapper.ConfigurationMapper"
    p:sqlSessionFactory-ref="sqlSessionFactory" />

DriverRepositary.java

@Repository
public interface DriverRepositary extends CrudRepository<Driver,Long>{}

持久实体

@Transactional
public void addDriver(Driver driver) {
    driver.setTabletPassword(setDriverPassword(driver.getPhone()));
    driver.setUpdated(new Date());
    driverRepositary.save(driver);

}

您可以检查以下内容吗?

  1. 有两个声明的Transaction Manager Bean。 他们需要吗?
  2. 为什么需要会话工厂bean声明?
  3. 将Hibernate.show_sql设置为true作为JPA属性的一部分(用于调试)
  4. 是显式设置主键还是使用序列?

另外,如有可能,请提供从服务器启动到此错误点为止的所有可用日志,以进行任何进一步的分析。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM