以下关系创建外键Map
@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;
}
生成:
…约束 fk_department
外键( fk_department_id
)参考文献 department
( name
)
问题:如何在hibernate中触发这个约束的创建,而不必创建 Department
实体?
例如只是添加外键 @Id
没有显式实体引用的字段。但在初始创建时仍会触发fk。以下内容当然无效:
@ManyToOne
@JoinColumn(name = "fk_department_id", foreignKey = @ForeignKey(name="fk_department"))
private String department;
你明白我的意图了。有可能吗?
(旁注:我对通过启动ddl/sql语句创建外键链接不感兴趣)。
1条答案
按热度按时间3j86kqsm1#
你必须放弃
@ManyToOne
至少,因为那是实体的。在创建列定义时,应重写列定义以包含外键,从而实现以下操作
现在只定义了一个列和一个约束,但实体之间没有定义关系(据hibernate所知)。
基本上是从hibernate和jpa复制过来的:如何在字符串上设置外键约束,但是很难找到,所以我不打算把它作为一个副本来关闭!;)