簡體   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