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_表
。使用这些联接表,您的模型会显示:
- 一个值可以属于多个主行
- 一个主行可以属于多个值行
master (id, ...)
value1 (masterId, ...)
value2 (masterId, ...)
使用@heritance(strategy=heritancetype.JOINED)
有关更多信息,请查看此处:
但是:无论何时使用@heritation
都必须为所有内容创建一个单独的@Entity
类
如果您确实需要上面的5表布局,请使用
@ManyToMany
基本上,JPA用于将Java对象映射到SQL表,而不是反过来;)如果您需要做一些不可能使用JPA(或者太复杂)的事情,您可以使用JDBC,手工创建查询和实体映射