繁体   English   中英

休眠的JPA为什么生成选择而不是插入?

[英]Why does hibernate JPA generate a select instead of an insert?

因此,我正在调用存储库的save方法。

//Store Controller
private StoreService;

Store s = new Store();
s.setName("some store");
storeService.createStore(s);

-

//StoreServiceImpl
private StoreRepository storeRepository;

public void createStore(Store s) {
    storeRepository.save(s);
}

当我查看休眠日志时,将生成一个选择。 是什么赋予了?

编辑#1

是oracle DB。 id是通过java生成的,我只是这样设置它:

String id = RandomStringGenerator.generate();
s.setId(id);

我知道了。 我需要创建一个jpaTransactionManager并在其中设置我的entityManager。 然后,我需要将jpaTransactionManager包装在TransactionProxyFactoryBean中。 然后,我需要在xml中创建StoreService bean,作为TransactionProxyFactoryBean的代理。 此后,所有保存请求均通过事务处理。

简而言之,当我尝试将事务保存到数据库中时,我没有使用事务。

由于分配了Store ID,因此Hibernate不知道数据库中是否存在给定的id值。

因此,默认情况下,它将针对数据库进行检查( 执行 SELECT 语句 ),以查看此Store已存在于数据库中,然后触发INSERT语句。

暂无
暂无

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

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