簡體   English   中英

插入許多行JPA Spring Boot Mysql

[英]Insert many rows JPA Spring Boot Mysql

我想在mysql的同一張表中插入很多行並出現錯誤:

org.hibernate.StaleObjectStateException:行已被另一個事務更新或刪除

代碼是:

WpPostmeta wpPostmeta = new WpPostmeta();
wpPostmeta.setPostId(wpPosts.getId());
wpPostmeta.setMetaKey("_sku");
wpPostmeta.setMetaValue("");

wpPostmetaService.saveOrUpdate(wpPostmeta);

wpPostmeta.setPostId(wpPosts.getId());
wpPostmeta.setMetaKey("_regular_price");
wpPostmeta.setMetaValue(reqularPrice[0]);

wpPostmetaService.saveOrUpdate(wpPostmeta);

服務是:

public WpPostmeta saveOrUpdate(WpPostmeta wpPostmeta){

    wpPostmetaRepository.save(wpPostmeta);
    wpPostmetaRepository.flush();
    return wpPostmeta;


}

接口是:

公共接口WpPostmetaRepository擴展了JpaRepository {

@Query(value = "Select * from wp_postmeta where post_id = ?1", nativeQuery = true){}

我應該如何一張一張地插入許多行?

此代碼正在更新同一條記錄。 它只是單行

WpPostmeta wpPostmeta = new WpPostmeta();
wpPostmeta.setPostId(wpPosts.getId());
wpPostmeta.setMetaKey("_sku");
wpPostmeta.setMetaValue("");

wpPostmetaService.saveOrUpdate(wpPostmeta);

wpPostmeta.setPostId(wpPosts.getId());
wpPostmeta.setMetaKey("_regular_price");
wpPostmeta.setMetaValue(reqularPrice[0]);

wpPostmetaService.saveOrUpdate(wpPostmeta);

如果要多行,將是這樣

WpPostmeta wpPostmeta = new WpPostmeta();
wpPostmeta.setPostId(wpPosts.getId());
wpPostmeta.setMetaKey("_sku");
wpPostmeta.setMetaValue("");

wpPostmetaService.saveOrUpdate(wpPostmeta);

WpPostmeta wpPostmeta1 = new WpPostmeta();
wpPostmeta1.setPostId(wpPosts.getId());
wpPostmeta1.setMetaKey("_regular_price");
wpPostmeta1.setMetaValue(reqularPrice[0]);

wpPostmetaService.saveOrUpdate(wpPostmeta1);

相反,您可以使用saveAll方法像這樣

List<WpPostmeta> lstRecord = new ArrayList<WpPostmeta>();

WpPostmeta wpPostmeta = new WpPostmeta();
wpPostmeta.setPostId(wpPosts.getId());
wpPostmeta.setMetaKey("_sku");
wpPostmeta.setMetaValue("");
lstRecord.add(wpPostmeta);


WpPostmeta wpPostmeta1 = new WpPostmeta();
wpPostmeta1.setPostId(wpPosts.getId());
wpPostmeta1.setMetaKey("_regular_price");
wpPostmeta1.setMetaValue(reqularPrice[0]);
lstRecord.add(wpPostmeta1);


saveAll(lstRecord);


public Boolean saveAll(List<WpPostmeta> lstData){
    wpPostmetaRepository.saveAll(lstData);
    return true;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM