Jpa / Hibernate карта внешнего ключа без отношения - PullRequest
0 голосов
/ 13 марта 2020

В JPA / Hibernate, возможно ли express внешний ключ без добавления отношения?

В DDD в совокупности root Я хотел бы иметь идентификатор другого агрегата root - Я не хочу иметь ссылку на этот агрегат, только идентификатор. Можно ли применить внешний ключ в спящем режиме? (Я использую автоматическую генерацию схемы hibernate).

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, потому что я не хочу хранить ссылку на другой агрегат в Event агрегат. Это будет DDD антипаттерн.

Ответы [ 2 ]

1 голос
/ 14 марта 2020

Вы можете использовать columnDefinition в @Column для добавления ограничения.

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

Обратите внимание, что для ограничения вам потребуется использовать тип и синтаксис базы данных c SQL.

1 голос
/ 13 марта 2020

Вы можете попробовать импортировать файл скрипта .

4.1. Импорт файлов сценариев

Чтобы настроить процесс создания схемы, необходимо использовать свойство конфигурации hibernate.hbm2ddl.import_files для предоставления других файлов сценариев, которые Hibernate может использовать при запуске SessionFactory.

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

Hibernate выполнит файл сценария после автоматической генерации схемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...