Indice UniqueConstrain

Buongiorno,
per verificare l’unicità dei record avrei bisogno del seguente indice che ho impostato sull’entità:
@UniqueConstraint(name = “IDX_SIMPLE_DOCUMENTI_UNQ”, columnNames = {“TENANT_ID”, “TIPO_DOCUMENTO”, “EXTRACT(YEAR FROM DATA_DOCUMENTO)”, “COALESCE(NUMERAZIONE,’-1’)”, “NUMERO_DOCUMENTO”})

Quando Cuba crea l’indice sul database (Postgres) me lo crea cosi’:
create unique index IDX_SIMPLE_DOCUMENTI_UNQ on SIMPLE_DOCUMENTI (TENANT_ID, TIPO_DOCUMENTO, NUMERO_DOCUMENTO) where DELETE_TS is null

mentre quello che vorrei io sarebbe questo:
create unique index IDX_SIMPLE_DOCUMENTI_UNQ on SIMPLE_DOCUMENTI (TENANT_ID, TIPO_DOCUMENTO, EXTRACT(YEAR FROM DATA_DOCUMENTO), COALESCE(NUMERAZIONE,’-1’), NUMERO_DOCUMENTO) where DELETE_TS is null;

Esiste un modo per dire a Cuba Studio a creare l’indice come voglio io?

Grazie

Marco

Ciao Marco,
nel caso di indici custom più complessi, non farli generare in automatico, e definisci manualmente l’indice negli script di creazione.
Quindi devi:

  1. togliere l’indice unique (@UniqueConstraint) dall’editor di entità
  2. creare un file nuovo nella cartella degli scripts del DB e chiamarlo ad esempio 25.create-db.sql. Io cerco di mantenere la numerazione coerente con quella di CUBA, quindi i file che iniziano con 1 sono per create, quelli con 2 sono per indici e constraints e quelli con 3 sono per popolamento dati (INSERT/UPDATE)

Paolo

Buongiorno Paolo,
ho seguito le tue istruzioni e ho risolto il problema! :slight_smile:
Grazie
Marco