0

我有一个像这样的嵌套对象

public class Chart {

   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private long chart_id;

   @OneToMany(fetch=FetchType.EAGER,cascade=CascadeType.ALL)
   @JoinColumn(name="chart_id")
   private Set<ChartGroup> chartGroups;
        /* ..other attributes.. */
}

public class ChartGroup {
   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private long group_id;
   private long chart_id;

       @OneToOne(fetch=FetchType.EAGER,cascade=CascadeType.ALL)
   @JoinColumn(name="group_id")
   private ChartYData chartYData;
         /* ..other attributes.. */
 }

 public class ChartYData {

   @Id
   private long group_id;

   private String yData;
  }

我有用于获取和保存/更新这些数据的 REST 服务。获取特定图表的数据后,我将所有 JSON 数据保存在 javascript 对象中。用户可以删除或修改图表中的组,也可以添加新组。我正在将完整的图表对象发送到服务器以进行保存。添加新组或删除旧组时不会进行呼叫。当用户添加新组时会出现问题。在我的 JSON 中,值是这样的 发布数据 JSON

当我尝试更新 CHART 对象时,它给了我 MySQLIntegrityConstraintViolationException:Cannot add or update a child row: a foreign key constraint failed ( chartpro. chart_ydata, CONSTRAINT fk_ydata_to_groupFOREIGN KEY ( group_id) REFERENCES chart_group( group_id)

有没有办法整体更新我的图表对象?我的意思是 JPA 应该添加 ChartGroup 然后使用新创建的 group_id 添加 ChartYData

即使我发送以下 JSON,它也会给我同样的错误,(对于新组,group_id=null)

  ChartGroups : [{/* data for previously present Chart groups (works fine) */},{
    chartYData :
 { 
            ydata : "ydata",
            group_id : null
          } 
  chart_id:1
  group_id:null
 }]
4

1 回答 1

0

我认为您必须手动设置 ChartYData 实体中的 group_id 的问题,因为您没有使用 json 对象发送 group_id,或者通过 javascript 处理它以在发送之前将 group_id 添加到 ChartYData。

于 2013-04-27T09:55:28.563 回答