postgresql - 使用表关联时保存多对多关系的策略

标签 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

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

从客户端,

当添加新的时,CarClassJoins 的 id 为空...但未发送用户要删除的一个。

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

最佳答案

尝试以下操作。

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;

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

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

关于postgresql - 使用表关联时保存多对多关系的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46797996/

相关文章:

javascript - 传单数据格式

sql - 子查询中两列的 Postgres where 子句

hibernate - 空闲事务 Hibernate/PostgreSQL

java - 如何使用 JPA 和 Hibernate 映射 PostgreSQL 枚举

javax.persistence.PersistenceException : org. hibernate.exception.SQLGrammarException: 无法执行查询

postgresql - PG- promise : Query formatting issue in QueryFile

ruby-on-rails - Rails - 使用 PostgreSQL 安装 Cucumber

java - 如何为 hibernate 中的自动增量提供起始值

java - Hibernate hql查询异常

java - 错误 java.lang.InstantiationException