Как создать уникальные индексы с предложениями where в Java JPA? (спящий или весенний) - PullRequest
0 голосов
/ 11 ноября 2018

Я хочу создать приложение с Spring Boot, Spring Data JPA и PostgreSQL. В моей модели данных есть некоторые частичные уникальные индексы, которые работают с некоторыми правилами, подобными приведенным ниже:

drop table if exists persons.person;
create table if not exists persons.person (
    id                  bigserial,
    name                varchar(99) not null, 
    sobrename           varchar(99) not null, 
    birthdate           date,
    official_registry   varchar(32) not null,   
    realPerson_sn       bool not null default true, -- in case of real person, true, juridical person, false
    isMatrix            bool null,                  -- in case of eral person, female = false, male = true
    isConfirmed         bool default false,         -- if data is confirmed officially
    constraint          person_id primary key(id),
);  create unique index person_juridical_cnpj_ix on persons.person (official_registry) where (realPerson_sn = false);
    create unique index person_realPerson_ix on persons.person (name, sobrename, birthdate_dt) where (realPerson_sn = true);
    create unique index person_realPerson_cpf_ix on persons.person (official_registry)  where ((realPerson_sn = true) and ((official_registry <> null) and (official_registry <> ''))); 

В этом примере я хочу использовать одну таблицу для хранения как реальных, так и юридических лиц, используя сходства в их данных, таких как имена, реестр и т. Д. И после этого я создал уникальные индексы, которые отражают различия между ними, чтобы облегчить поиск записей в обоих случаях.

Примечание о критицизме: это только один пример, у меня есть несколько таблиц, использующих эти типы индексов с предложением where, поэтому не имеет значения, если этот пример можно заменить на 2 таблицы, мне все равно понадобится где пункты в других индексах.

Мне удалось скомпилировать всю мою модель в PostgreSQL 9, и она хорошо работала, когда я использовал ее в приложениях Delphi и PHP.

Но теперь я хочу реализовать его в Java Spring Boot и Angular. Но я хочу переписать модель, чтобы она была скомпилирована из JPA с нуля.

Возможно ли воссоздать эти правила индекса в JPA, или это PostgreSQL, который не охватывается JPA, Hibernate, Spring Data и другими?

...