在JPA / Hibernate中,可以在不添加关系的情况下表达外键吗?
在DDD的聚合根目录中,我想要一个其他聚合根目录的ID-我不想仅对该ID引用此聚合。是否可以通过休眠方式强制执行外键? (我使用休眠自动模式生成)。
EG
@Entity
Person {
...
}
@Entity
Event {
@Id
private long eventId;
@ForeignKey(references Person.id)
private long personId;
// I don't want to map it as @ManyToOne Person
}
我不想使用@ManyToOne,因为我不想在事件聚合中存储对其他聚合的引用。这将是DDD反模式。
答案 0 :(得分:1)
您可以尝试使用importing script file。
4.1。导入脚本文件
要自定义模式生成过程,必须使用
hibernate.hbm2ddl.import_files
配置属性来提供其他SessionFactory
启动时Hibernate可以使用的脚本文件。
<property name="hibernate.hbm2ddl.import_files" value="schema-generation.sql" />
自动生成架构后,Hibernate将执行脚本文件。
答案 1 :(得分:1)
您可以使用columnDefinition
中的@Column
添加约束。
@Column(columnDefintion="bigint references Person(id)")
private long personId;
请注意,您将需要使用数据库特定的SQL类型和语法作为约束。