Jpa /休眠映射外键无关系

问题描述 投票:0回答:2

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

hibernate jpa orm domain-driven-design many-to-one
2个回答
1
投票

您可以使用columnDefinition中的@Column添加约束。

@Column(columnDefintion="bigint references Person(id)")
private long personId;

请注意,您将需要使用数据库特定的SQL类型和语法作为约束。


1
投票

您可以尝试使用importing script file

4.1。导入脚本文件

要自定义模式生成过程,必须使用hibernate.hbm2ddl.import_files配置属性来提供启动SessionFactory时Hibernate可以使用的其他脚本文件。

<property name="hibernate.hbm2ddl.import_files" value="schema-generation.sql" />

自动生成模式后,Hibernate将执行脚本文件。

© www.soinside.com 2019 - 2024. All rights reserved.