gpt4 book ai didi

java - Hibernate @SecondaryTable - 指定主表的外键

转载 作者:行者123 更新时间:2023-11-29 13:11:32 25 4
gpt4 key购买 nike

我有两个表:

  1. 语言

    CREATE TABLE language (
    id BIGSERIAL,
    name TEXT NOT NULL UNIQUE,
    PRIMARY KEY (id)
    );
  2. 翻译

    CREATE TABLE translation (
    id BIGSERIAL,
    language_id BIGINT REFERENCES language (id),
    translation_key TEXT NOT NULL,
    translation_value TEXT NOT NULL,
    PRIMARY KEY (id)
    );

    我想获得这样的实体,其中翻译表(主表)通过主表中的 language_id 连接语言表。 问题:目前它通过翻译加入PK(id)。

    @Entity
    @Table(name = "translation")
    @SecondaryTable(name = "language", pkJoinColumns = @PrimaryKeyJoinColumn(name = "id"))
    public class Translation {

    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @Column(table = "language", name = "name")
    // ON translation.language_id = language.id
    private String language;

    @Column(name = "translation_key")
    private String translationKey;

    @Column(name = "translation_value")
    private String translationValue;

    // getters and setters
    }

    我应该在我的代码中的什么地方指定它才能正确执行?SQL 示例: SELECT t.id, l.name, translation_key, translation_value FROM translation t INNER JOIN language l on t.language_id = l.id;

    /li>

最佳答案

您不能将@SecondaryTable 用于您描述的目的。

@SecondaryTable 在单个实体分布在多个表中时使用。实体的这些“部分”中的每一个都必须由实体私有(private)拥有,并且与其他每个“部分”都处于一对一的关系中。

如果您想要翻译和语言之间的多对一关系,则需要使用 @ManyToOne(并创建一个单独的 Language 实体)。

关于java - Hibernate @SecondaryTable - 指定主表的外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54026764/

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