Java 连接多个辅助表

Java 连接多个辅助表,java,hibernate,jpa,orm,Java,Hibernate,Jpa,Orm,我有以下表格: master_table(id, col1, col2, discriminator_col) join_table1(m_id, v_id) value_table1(id, val) join_table2(m_id, v_id) value_table2(id, val) 有一个主表和几个值表通过联接表联接到主表。值表包含每个主表行的单个标量值。来自不同值表的值被放置到子实体中,因此有一个主实体和多个Child1Entity、Child2Entity等 我不想为每个v

我有以下表格:

master_table(id, col1, col2, discriminator_col)

join_table1(m_id, v_id)
value_table1(id, val)

join_table2(m_id, v_id)
value_table2(id, val)
有一个主表和几个值表通过联接表联接到主表。值表包含每个主表行的单个标量值。来自不同值表的值被放置到子实体中,因此有一个主实体和多个Child1Entity、Child2Entity等

我不想为每个value_表创建单独的实体,只想为每个ChildEntity创建一个单独的实体,并以某种方式将value表连接到该实体

主实体:

@Entity
@Inheritance(...) // not sure what type of inheritance to use
public class MasterEntity {
    @Id
    private int id;

    private String col1;

    private String col2;
}
@Entity
public class Child1Entity extends MasterEntity {

    // need to get value_table1.val column here

}
儿童实体:

@Entity
@Inheritance(...) // not sure what type of inheritance to use
public class MasterEntity {
    @Id
    private int id;

    private String col1;

    private String col2;
}
@Entity
public class Child1Entity extends MasterEntity {

    // need to get value_table1.val column here

}
我可以为value_表创建实体,并将多对一关系添加到
Child1Entity
,但如果可以避免,我愿意这样做


我试图将两个辅助表(join_table1,value_table1)添加到
Child1Entity
,但我无法将
join_table1
value_table1
连接,只需使用
master_table
如果您想使用
@heritation
,就不能让那些
join_表
。使用这些联接表,您的模型会显示:

  • 一个值可以属于多个主行

  • 一个主行可以属于多个值行

如果您只想:1主控属于1值行,请使用以下选项:

master (id, ...)
value1 (masterId, ...)
value2 (masterId, ...)
使用
@heritance(strategy=heritancetype.JOINED)

有关更多信息,请查看此处:

但是:无论何时使用
@heritation
都必须为所有内容创建一个单独的
@Entity


如果您确实需要上面的5表布局,请使用
@ManyToMany


基本上,JPA用于将Java对象映射到SQL表,而不是反过来;)如果您需要做一些不可能使用JPA(或者太复杂)的事情,您可以使用JDBC,手工创建查询和实体映射