spring boot数据库插入不起作用

时间:2017-03-09 10:25:29

标签: java hibernate spring-boot spring-data-jpa

我的xml中的spring boot配置有问题我创建了这个配置:

<bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
        <property name="showSql" value="true"/>
        <property name="generateDdl" value="false"/>
        <property name="database" value="ORACLE"/>
    </bean>
    <bean id="dataSource" primary="true" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="oracle.jdbc.OracleDriver"/>
        <property name="url" value="jdbc:oracle:thin:@localhost:20300:test"/>
        <property name="username" value="test"/>
        <property name="password" value="test"/>
    </bean>

    <tx:annotation-driven transaction-manager="transactionManager"/>
     <bean id="entityManagerFactory" primary="true" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="jpaVendorAdapter" ref="jpaVendorAdapter"/>
        <!-- spring based scanning for entity classes-->
        <property name="packagesToScan" value="model.entity"/>
        <property name="persistenceUnitName" value="msPersistenceUnit" />
    </bean>

    <tx:annotation-driven transaction-manager="transactionManager"  />
    <bean id="controllerService"
        class="...impl.ControllerServiceImpl">
        <property name="entityManager" ref="entityManagerFactory" />
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager" >
        <constructor-arg index="0" ref="entityManagerFactory" />
    </bean>

我有这样的java代码:

public void setEntityManager(final HibernateEntityManagerFactory entityManager) {
        final RepositoryFactorySupport factorySupport = new JpaRepositoryFactory(entityManager.createEntityManager());

        controlRepository = factorySupport.getRepository(ObjControlRepository.class);
}

当我使用find方法时,没关系,但是当我进行保存时,没有异常,但是它没有插入值。 感谢您的帮助。

[编辑] 保存我正在使用:

/**
 * The Interface ObjControlRepository.
 */
public interface ObjControlRepository extends CrudRepository<ObjControl, String> {

}

我正在调用这样的方法:

controlRepository.save(newValue);

3 个答案:

答案 0 :(得分:0)

您应该尝试将hibernate.hbm2ddl.auto变量明确设置为auto。这将阻止您的应用程序在您启动应用程序时释放以前的数据。

You can learn more about the hibernate.hbm2ddl.auto variable here.

答案 1 :(得分:0)

您应该使用事务并提交事务以保存实体。

因此,在服务层上使用@Transactionl注释,如下所示:

@Transactional
public class ControllerServiceImpl {
...
}

由于ControllerServiceImpl已在spring配置文件中声明为bean,因此一旦保存实体,Spring将负责提交事务。

答案 2 :(得分:-1)

请包括尝试捕获以获取异常