gpt4 book ai didi

java - 连接多个辅助表

转载 作者:行者123 更新时间:2023-12-01 12:16:32 24 4
gpt4 key购买 nike

我有以下表格:

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)

有一个主表和多个通过连接表连接到主表的值表。值表包含每个 master_table 行的单个标量值。来自单独值表的值被放置到后代实体中,因此有一个 MasterEntity 和多个 Child1Entity、Child2Entity 等。

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

主实体:

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

private String col1;

private String col2;
}

Child1Entity:

@Entity
public class Child1Entity extends MasterEntity {

// need to get value_table1.val column here

}

我可以为 value_table 创建实体,并向 Child1Entity 添加多对一关系,但如果可以避免,我想这样做。

我尝试将两个辅助表(join_table1、value_table1)添加到 Child1Entity,但无法将 join_table1value_table1 连接,只需使用master_table

最佳答案

如果您想使用@Inheritance,则不能拥有这些join_tables。通过这些连接表,您的模型会显示:

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

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

如果您只想:1 个主数据属于 1 个值行,则使用此:

master (id, ...)
value1 (masterId, ...)
value2 (masterId, ...)

使用@Inheritance(strategy=InheritanceType.JOINED)

有关更多信息,请查看此处:http://en.wikibooks.org/wiki/Java_Persistence/Inheritance

但是:每当您使用@Inheritance时,您都必须为所有内容创建一个单独的@Entity类。

<小时/>

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

<小时/>

基本上,JPA 是为了将 Java 对象映射到 SQL 表而设计的,而不是相反;)如果您需要做一些使用 JPA 无法完成的事情(或者太复杂),您始终可以使用 JDBC 并制作您的查询以及手动实体映射。

关于java - 连接多个辅助表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26962589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com