gpt4 book ai didi

java - 如何在hibernate中不添加引用@Entity的情况下触发外键关系?

转载 作者:行者123 更新时间:2023-11-29 10:08:34 24 4
gpt4 key购买 nike

以下关系创建外键映射

@Entity
public class Department {
@Id
private String name;

//some more fields
}

@Entity
public class Employee {
@Id
private long id;

private String name;
private String designation;

@ManyToOne
@JoinColumn(name = "fk_department_id", foreignKey = @ForeignKey(name="fk_department"))
private Department department;
}

生成:

...CONSTRAINT fk_department FOREIGN KEY (fk_department_id) REFERENCES department (name)

问题:如何在 hibernate 中触发此约束创建,而不必创建 Department 实体?

例如,仅添加外键 @Id 字段,而无需显式实体引用。但仍会在初始创建时触发 fk。以下当然是无效的:

   @ManyToOne
@JoinColumn(name = "fk_department_id", foreignKey = @ForeignKey(name="fk_department"))
private String department;

你明白了。这可能吗?

(旁注:我对通过启动 ddl/sql 语句创建外键链接不感兴趣)。

最佳答案

您至少必须删除@ManyToOne,因为那是针对实体的。

以下内容应该通过覆盖列定义以在创建时包含外键来工作

@Column(name = "department_id", columnDefinition = "VARCHAR(255), foreign key (department_id) REFERENCES department(name)")
private String department;

现在只定义了一个列和一个约束,但实体之间没有定义关系(据 Hibernate 所知)。

基本上复制自 Hibernate and JPA: how to make a foreign key constraint on a String但这很难找到,所以我不会只是将其作为重复项关闭! ;)

关于java - 如何在hibernate中不添加引用@Entity的情况下触发外键关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51421156/

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