使用表关联时,使用多对多关系保存策略

时间:2017-10-17 19:42:58

标签: postgresql hibernate jpa

我有这种类

的结构
CarElementClasses
    Integer id
    @OneToMany(mappedBy = "carElementClass")
    private List<CarClassJoins> carClassJoins;

CarClassJoins
    Integer id
    @ManyToOne
    @JoinColumn(name = "car_element_class_id", referencedColumnName="id")
    private CarElementClasses carElementClass;

    @ManyToOne
    @JoinColumn(name = "car_param_id", referencedColumnName="id")
    private CarParams carParam;
    private String default;

CarParams
    Integer id
    String name
    @OneToMany(mappedBy = "carParam")
    private List<CarClassJoins> carClassJoins;

CarElementClasses与carParams有很多关系,CarClassJoins是一个表关联。

当显示CarElementClasses时,用户可以修改,删除CarClassJoins

如果用户添加和删除值,我不知道如何管理保存。

从客户端,

添加新的ID时,CarClassJoins的ID为空...但不会发送用户想删除的内容。

我需要在CarElementClasses上保存。 是否有一个策略在jpa中每次都自动重建关系的所有元素?

1 个答案:

答案 0 :(得分:2)

请尝试以下操作。

CarElementClasses
    Integer id
    @OneToMany(mappedBy = "carElementClass", cascade = CascadeType.ALL)
    private List<CarClassJoins> carClassJoins;

CarClassJoins
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    Integer id
    @ManyToOne
    @JoinColumn(name = "car_element_class_id", referencedColumnName="id")
    private CarElementClasses carElementClass;

    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "car_param_id", referencedColumnName="id")
    private CarParams carParam;
    private String default;

级联选项会将对实体的操作链接到相关实体。对于mor信息:https://en.wikibooks.org/wiki/Java_Persistence/Relationships#Cascading

@ID和@GeneratedValue组合将在实体持续存在时生成id。