我试图坚持一些具有复合id的对象。如果我只发送一个包含一个元素的数组,它可以正常工作,但是在保存第一个数组时,数组有多个引发异常。 public boolean
addParamsToChart(List<ChartParams> chartParams, Long chartId) {
List<ChartParams> chartParamsList = new ArrayList<>();
for(ChartParams chartParam: chartParams) {
ChartParamsId id = new ChartParamsId();
// id.setChartId(chartId);
id.setChartId(chartParam.getChart().getId());
id.setParamId(chartParam.getParam().getId());
id.setContextSourceId(chartParam.getContextSource().getId());
chartParam.setChartParamsId(id);
if(chartParamsRepository.save(chartParams) !=null) {
chartParamsList.add(chartParam);
}
}
if(chartParamsList.size()!=chartParams.size()) {
// something went wrong, delete previous inserted
deleteChartParams(chartParamsList);
chartRepository.delete(chartId);
return false;
}
return true;
}
[{ “图表”:{ “id”:49, “简历”: { “id”:1, “名字”:“钱”, “类别”:{ “id”:1, “名字”:“欧元” }, “定义”:“\”欧洲货币。“[欧盟:欧元]”, “启用”:是的, “cvid”:“CC:1010” }, “帐户类型”: { “id”:1, “名字”:“拯救” }, “名称”:“欧元保存图表” }, “param”:{ “id”:8, “名字”:“总计”, “isFor”:“货币” }, “contextSource”:{ “id”:3, “名字”:“欧元”, “内部”:“欧元”, “abbreviatedName”:“eu” }}]
但是因为内部有两个对象而不是一个不起作用,所以在第一次保存时抛出异常。
[{ “图表”:{ “id”:52, “简历”: { “id”:55, “名称”:“股票”, “类别”:{ “id”:1, “名称”:“股票” }, “定义”:“\”普通股。“[GS:ST]”, “启用”:是的, “cvid”:“ST:0111” }, “帐户类型”: { “id”:1, “名字”:“拯救” }, “名称”:“库存图” }, “param”:{ “id”:8, “名字”:“总计”, “isFor”:“货币” }, “contextSource”:{ “id”:6, “名字”:“股票”, “内部”:“st”, “abbreviatedName”:“st” },{ “图表”:{ “id”:52, “简历”: { “id”:55, “名称”:“股票”, “类别”:{ “id”:1, “名称”:“股票” }, “定义”:“\”普通股。“[GS:ST]”, “启用”:是的, “cvid”:“ST:0111” }, “帐户类型”: { “id”:1, “名字”:“拯救” }, “名称”:“库存图” }, “param”:{ “id”:8, “名字”:“总计”, “isFor”:“货币” }, “contextSource”:{ “id”:7, “名称”:“已售出的库存”, “internal”:“st_sold”, “abbreviatedSequence”:“st_sold” }}]
我得到的例外是: org.hibernate.id.IdentifierGenerationException:为以下内容生成的null id:class eu.stocks.chart.chartParams.ChartParams