ManyToOne没有使用级联更新

时间:2015-10-13 10:31:45

标签: java hibernate jpa

我正在使用hibernate更新ManyToOne关系,但它没有更新子类。

 class People{
     @Id
     @Column(name = "People_id")
     @GeneratedValue(generator = "uuid")
     @GenericGenerator(name = "uuid", strategy = "uuid2")
     private String id;
     @NotNull
     @Size(max = 45)        
     @Column(name = "phone", length = 45, nullable = false)
     private String phone;

     @ManyToOne
     @JoinColumn(name="regions_id")
     private Regions regionsid;

     @ManyToOne
     @JoinColumn(name="role_id")
     @Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE})
     private Role role_id;
 }

 class Role {

     @Id
     @Column(name = "Role_id")
     @GeneratedValue(generator = "uuid")
     @GenericGenerator(name = "uuid", strategy = "uuid2")
     private String id;

     @ManyToOne
     @JoinColumn(name="regions_id")
     @Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE})
     private Regions regions_id;
 }

 public class Regions implements Serializable {

     @Id
     @GeneratedValue(strategy = GenerationType.AUTO)
     private Long id;
 }

当我使用以下方式拯救人们时: -

people.getRole_id().setRegions_id(people.getRegions_id());
    People result = peopleRepository.saveAndFlush(people);

是不是使用区域代码更新区域表。

我不确定cascade是否定义正确。

你能指导我如何纠正它吗?

1 个答案:

答案 0 :(得分:0)

代码:

people.getRole_id().setRegions_id(people.getRegions_id());
People result = peopleRepository.saveAndFlush(people);

您更新了角色表中的 regions_id 列,但带有区域代码的区域表。

你能解释一下你想做什么吗?