gpt4 book ai didi

java - 在公共(public)表保存多个表的元数据的情况下使用 Hibernate

转载 作者:行者123 更新时间:2023-12-01 13:42:19 26 4
gpt4 key购买 nike

我有以下情况:

有一个表维护与多个实体相关的元数据。下面是架构以及表格的外观:

Sample Table

TABLE_ATABLE_B 都映射为 Hibernate 实体,并由 ClassAClassB 支持。现在,我如何在 Hibernate 中映射此表,以便实现以下场景:

ClassA classA = aService.getById("1234");

ClassB classB = bService.getById("1234");

classA.getAttributeValue(); -- Should return 12ab

classB.getAttributeValue(); -- Should return cs12

有没有一种方法可以让Hibernate根据调用该方法的对象的类型智能地获取AttributeValue

最佳答案

我认为您正在寻找 Single table inheritance 。所以你的类可能如下所示:

@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(
name="entityType",
discriminatorType=DiscriminatorType.STRING
)
@DiscriminatorValue("TABLE_A")
public class ClassA {
@Id
private String id;

@Column(name = "ATTRIBUTE_NAME")
private String name;

@Column(name = "ATTRIBUTE_VALUE")
private String value;
}

@Entity
@DiscriminatorValue("TABLE_B")
public class ClassB extends ClassA { ... }

另一种方法是创建一个公共(public)祖先类,并将 Table_A 映射到它自己的子类实体。

关于java - 在公共(public)表保存多个表的元数据的情况下使用 Hibernate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20630402/

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