具有两个属性的JPA映射。是否可以在mappedBy中包含两列(属性)?

具有两个属性的JPA映射。是否可以在mappedBy中包含两列(属性)?,jpa,spring-data-jpa,mapping,one-to-many,Jpa,Spring Data Jpa,Mapping,One To Many,比如说,有三个DB表 表A以主键作为辅助 表B主键为投标,以及 主键为cId的表C,还有两列是Table_name和Table_key 表C可以有对应于 表A中的一个条目,其table_key=aId和table_name='A' 表B中的一个条目,表_key=bId,表_name='B' @实体 @表(name=“A”) 公共类A实现可序列化{ 私有静态最终长serialVersionUID=1L; @身份证 @列(name=“A_KEY”) 私人援助; @OneToMany(mappedBy

比如说,有三个DB表

  • 表A以主键作为辅助
  • 表B主键为投标,以及
  • 主键为cId的表C,还有两列是Table_name和Table_key
  • 表C可以有对应于

  • 表A中的一个条目,其table_key=aId和table_name='A'
  • 表B中的一个条目,表_key=bId,表_name='B'
  • @实体
    @表(name=“A”)
    公共类A实现可序列化{
    私有静态最终长serialVersionUID=1L;
    @身份证
    @列(name=“A_KEY”)
    私人援助;
    @OneToMany(mappedBy=??)
    名单c;
    }
    @实体
    @表(name=“B”)
    公共类B实现可序列化{
    私有静态最终长serialVersionUID=1L;
    @身份证
    @列(name=“B_键”)
    私人串投标;
    @OneToMany(mappedBy=??)
    名单c;
    }
    @实体
    @表(name=“C”)
    公共类C实现了可序列化{
    私有静态最终长serialVersionUID=1L;
    @身份证
    @列(name=“C_键”)
    私有字符串cId;
    @列(name=“TABLE\u KEY”)
    私有字符串表密钥;
    @列(name=“TABLE_name”)
    私有字符串表名;
    }
    
    当我从表A或表B查询时,我想获取所有相关的C。
    有没有办法定义OneToMany映射来解决这个问题,我想在mappedBy或JoinColumn中使用两个列,然后在那里指定其中一个列的值-例如在表a的上下文中,table_name='A'而table_name='B'用于表B。在定义映射时,列属性值之一是已知的。

    我肯定不确定它是否有效,但您可以尝试
    @OneToMany()@JoinColumns(foreignKey={@JoinColumn(name=“col1”),@JoinColumn(name=“col2”)})公共列表c@Zorglube w.r.t.上述示例中,col2值已知。在A的上下文中,col2='A'是col2='B',在B的上下文中是col2='B'。当我分别在A和B中定义这些映射时,这些值可以被默认吗?你刚才读过关于
    @OneToMany
    JPA
    注释吗?是的,没有得到太多,因此将问题发布在这里。
    @Entity
    @Table(name = "A")
    public class A implements Serializable{
        private static final long serialVersionUID = 1L;
    
        @Id
        @Column(name = "A_KEY")
        private String aId;
    
    
        @OneToMany(mappedBy=?????)
        List<C> c;
    }
    
    @Entity
    @Table(name = "B")
    public class B implements Serializable{
        private static final long serialVersionUID = 1L;
    
        @Id
        @Column(name = "B_KEY")
        private String bId;
    
        @OneToMany(mappedBy=?????)
        List<C> c;
    }
    
    @Entity
    @Table(name = "C")
    public class C implements Serializable{
        private static final long serialVersionUID = 1L;
    
        @Id
        @Column(name = "C_KEY")
        private String cId;
    
        @Column(name = "TABLE_KEY")
        private String tableKey;
    
        @Column(name = "TABLE_NAME")
        private String tableName;
    
    }