所以我调用了我的存储库的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);
}
当我查看hibernate日志时,会生成一个select。是什么给了什么?
编辑#1
这是oracle DB。 id是通过java生成的,我只是这样设置:
String id = RandomStringGenerator.generate();
s.setId(id);
答案 0 :(得分:0)
因为分配了Store
个ID,所以Hibernate不知道数据库中是否存在给定的id
值。
因此,默认情况下,它会针对数据库检查(执行 SELECT
语句)以查看此Store
是否已存在于数据库中,然后开火INSERT
声明。
答案 1 :(得分:0)
我已经弄清楚了。我需要创建一个jpaTransactionManager并在其中设置我的entityManager。然后,我需要将jpaTransactionManager包装在TransactionProxyFactoryBean中。然后我需要在xml中创建我的StoreService bean作为TransactionProxyFactoryBean的代理。之后,所有保存的调用都经过了交易。
简而言之,当我尝试将事务保存到数据库时,我没有使用事务。