我的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);
答案 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)
请包括尝试捕获以获取异常