gpt4 book ai didi

java - 如何从JPA中的 "dictionary table"中提取值

转载 作者:行者123 更新时间:2023-12-02 03:30:53 29 4
gpt4 key购买 nike

我想将两个表(ManyToOne 连接)映射到 Java 中的一个对象。第一个是主 CatalogObject 表,第二个只是可能的对象类型的字典。在 Java 中,我只想拥有 String 类型,而不是映射到新对象。当我想搜索类中的所有对象(例如“数据库”)时,我必须首先找到“数据库”类型的 Id,然后找到指定了该 Id 的所有 CatalogObject。这看起来有点乏味。

CatalogObject Table:
ID, Name, Parent_ID (FK), TYPE_ID (FK)

Type Table:
ID, Type.

我已经使用 CatalogObject 和 CatalogObjectType 类创建了映射,但 CatalogObjectType 类现在仅包含单个字符串。

public class CatalogObject implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "parent_id")
CatalogObject parent;

String name;

@ManyToOne
@JoinColumn(name = "type_id")
CatalogObjectType type;
}

public class CatalogObjectType implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;

String name;
}

我想将 CatalogObjectType 替换为关联类型的字符串值。如何为 Hibernate/JPA 配置它?可以吗?

我想要的是:

public class CatalogObject implements Serializable {
...
String name;

@SomeAnnotation(name = "type_id")
String type;
}

最佳答案

是的,您可以通过 2 个简单步骤将一个实体映射到 2 个数据库表:

  1. 您需要使用 JPA 的 @Table 注释您的实体和@SecondaryTable注释并提供第一个和第二个表的名称作为名称参数的值。
  2. 您需要使用 @Column 注释要映射到辅助表的每个属性。注解并将辅助表的名称设置为表属性的值。

@Table注释定义了实体属性默认映射到的主表。@SecondaryTable注释指定实体映射到的第二个数据库表。

这就是将 2 个数据库表映射到一个实体所需要做的全部工作。

您可以查看this link获取示例的详细说明。

关于java - 如何从JPA中的 "dictionary table"中提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56885779/

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