相关疑难解决方法(0)

我有@ManyToMany时如何设置ForeignKey名称

我正在使用JPA类创建数据库.

如果我们有ManyToOne关系,我们可以像这样覆盖ForeignKey名称:

@ManyToOne
@JoinColumn(foreignKey = @ForeignKey(name = "FK_COUNTRY"))
private Country country;
Run Code Online (Sandbox Code Playgroud)

在DB中,我们将得到这样的结果:

在此输入图像描述

好的,那很好.好结果!

但是当我有@ManyToMany时,我将无法设置我自己的FK名称.

我该如何创建呢?我尝试这样的东西,但它不起作用:

@ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
@JoinTable(name = "NEW_TABLE",  foreignKey = @ForeignKey(name = "FK_TEST"))
Run Code Online (Sandbox Code Playgroud)

或类似的东西:

@JoinTable(
        name="NEW_TABLE",
        joinColumns=
            @JoinColumn(name="ID1", referencedColumnName="ID",  foreignKey = @ForeignKey(name = "FK_DEV_ID")),
        inverseJoinColumns=ID2", referencedColumnName="ID", foreignKey = @ForeignKey(name = "FK_DEV_ZONE"))
    )  
Run Code Online (Sandbox Code Playgroud)

或这个:

@ManyToMany(cascade = CascadeType.PERSIST)
@JoinTable(name="NEW_TABLE_2",
            joinColumns=
                @JoinColumn(name="ID1", referencedColumnName="ID", 
                            foreignKey = @ForeignKey(name = "FK_1")
                ),
            inverseJoinColumns=
                @JoinColumn(name="ID2", referencedColumnName="ID", 
                            foreignKey = @ForeignKey(name = "FK_2")
                ),

            foreignKey = @ForeignKey(name = "FK_1"),
            inverseForeignKey = …
Run Code Online (Sandbox Code Playgroud)

naming hibernate jpa foreign-keys

11
推荐指数
1
解决办法
3058
查看次数

如何在连接列中指定外键?

我的代码如下。我正在使用带有jpa和postgresql数据库的spring boot,我需要用户友好的名称作为外键。

    @实体
    @Table(name =“ course_table”)
    公共课程课程扩展了BaseAuditingEntity {

    @ManyToMany(级联= CascadeType.REMOVE,提取= FetchType.EAGER)
    @JoinTable(name =“ course_program_table”,joinColumns = @JoinColumn(name =“ course_id”,referencedColumnName =“ course_id”,foreignKey = @ForeignKey(name =“ fk_program_id”)),inverseJoinColumns = @JoinColumn(name =“ program_id”, referencedColumnName =“ program_id”,foreignKey = @ForeignKey(name =“ fk_course_id”)))
    私人名单计划;
    }

我已经使用@ForeignKey批注指定了外键的名称,但是当我看到db时,它显示了随机创建的外键名称。

创建表course_program_table
(
    course_id整数NOT NULL,
    program_id整数NOT NULL,
    约束fk_28c95hl4nqclyvyxuduei5nbf外键(program_id)
        参考public.program_table(program_id)匹配简单
        无需更新时
        删除任何操作后,
    约束fk_5sainywquv8yyu24pjk3jptn7外键(course_id)
        参考public.course_table(course_id)匹配简单
        无需更新时
        不删除任何动作
)

我需要注释中提到的外键,例如fk_program_id和fk_course_id。

提前致谢。

java spring hibernate jpa spring-boot

5
推荐指数
2
解决办法
2568
查看次数

休眠如何生成外键约束名称?

休眠如何生成外键约束名称?

如果我没有定义名称,休眠将生成类似这样的内容

CONSTRAINT fk_2ocepcfwpr1v18dg1ieoe6bau
Run Code Online (Sandbox Code Playgroud)

这个名字是怎么产生的?也许来自MD5字段名称的哈希值或类似的东西?我需要知道所有实例上的名称是否相等。

hibernate hbm2ddl

2
推荐指数
1
解决办法
1857
查看次数

标签 统计

hibernate ×3

jpa ×2

foreign-keys ×1

hbm2ddl ×1

java ×1

naming ×1

spring ×1

spring-boot ×1