Jpa /休眠映射外键无关系

时间:2020-03-13 15:49:40

标签: hibernate jpa orm domain-driven-design many-to-one

在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反模式。

2 个答案:

答案 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类型和语法作为约束。