Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
插入多行JPA Spring Boot Mysql_Mysql_Spring_Hibernate_Jpa - Fatal编程技术网

插入多行JPA Spring Boot Mysql

插入多行JPA Spring Boot Mysql,mysql,spring,hibernate,jpa,Mysql,Spring,Hibernate,Jpa,我想在mysql中向同一个表插入许多行,但出现错误: org.hibernate.StaleObjectStateException:行被另一个事务更新或删除 代码是: WpPostmeta wpPostmeta = new WpPostmeta(); wpPostmeta.setPostId(wpPosts.getId()); wpPostmeta.setMetaKey("_sku"); wpPostmeta.setMetaValue(""); wpPostmetaService.saveO

我想在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;


}
接口为:

公共接口WPPostaRepository扩展了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);
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;
}
相反,您可以使用像这样的saveAll方法

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);
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;
}
List lstrock=new ArrayList();
wppestta wppestta=新wppestta();
wppostETA.setPostId(wpPosts.getId());
wpPostmeta.setMetaKey(“sku”);
wpPostmeta.setMetaValue(“”);
lstRecord.add(wpPostmeta);
wpPosteTa wpPosteTa1=新的wpPosteTa();
wpPostmeta1.setPostId(wpPosts.getId());
wpPostmeta1.setMetaKey(“常规价格”);
wpPostmeta1.setMetaValue(reqularPrice[0]);
lstRecord.add(wpPostmeta1);
保存所有(记录);
公共布尔值saveAll(列表数据){
wppertarepository.saveAll(lstData);
返回true;
}

关于会话,您应该使用
saveAll
操作,而不是在批量使用时刷新每个保存操作。我正在尝试使用ArrayList,但我有一个错误:具有相同标识符值的不同对象已与会话相关联。我想问题出在此行wppostETA.setPostId(wpPosts.getId());…您是否正在尝试添加新数据或更新记录