在for循环中保存复合id时出错

时间:2018-03-09 08:21:01

标签: spring hibernate spring-data-jpa

我试图坚持一些具有复合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

0 个答案:

没有答案