spring - JPA : How to handle the entity mapping with two foreign keys and those two foreign together acts as a primary key

标签 spring hibernate spring-boot jpa

我有 2 张 table :

表A

id(PK)  name
------------
1       aa
2       ab
3       ac
4       ad

表B

master_id(FK_id)    slave_id(FK_id)
1                   2
2                   3
2                   4

表 A 和表 B 具有一对多关系。 表 B 具有 2 列(master_id、slave_id)的复合键,如上所示。并且B表中的两列都与A表有外键关系。

我们如何使用 spring JPA/hibernate 处理这个实体映射?

最佳答案

A 表的映射非常简单:

@Entity
public class A {

    @Id
    private Long id;

    private String name;

    // setters, getters, etc
}

对于 B 表,您必须声明多对一关系和复合 id。使用 @EmbeddedId 时,您不能将实体引用用作字段,因此在这种情况下 @IdClass 似乎更好:

@Entity
@IdClass(BId.class)
public class B {

    @Id
    @ManyToOne
    private A master;

    @Id
    @ManyToOne
    private A slave;

    // setters, getters, etc

}

最后一个,BId.class。同样,您不能使用实体引用作为字段,但可以用 A.id 类型(长整型)替换它们:

public class BId implements Serializable {

    private Long master;

    private Long slave;

}

关于spring - JPA : How to handle the entity mapping with two foreign keys and those two foreign together acts as a primary key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59695741/

相关文章:

java - 在eclipse中的另一个用户库中添加用户库

Java Spring Hibernate应用程序: Could not open connection

javascript - onchange 仅检测 div 的第一个复选框

java - 上下文初始化期间遇到异常 - 取消刷新尝试 : UnsatisfiedDependencyException

spring - 如何在同一个 Spring Boot 应用程序中使用多个 'JWK Set Uri' 值?

java - [Spring][Actuators] 无法处理配置类的导入候选

java - Spring RepositoryRestResource 带有路径参数?

java - 是否可以在单个 JDBC 连接上多路复用多个只读事务

java - session.load()方法如何在不访问数据库的情况下提取数据?

java - 使用 JSP 和 POM 中的自定义父集从提供内容的 Spring Boot MVC 项目中制作可执行 jar