2012-04-13 11 views
2

ich eine Einheit darstellt Dokumente haben, die wie folgt aussieht:JPA Constraint für Datum Jahr

Dokument date_creation DOC_NUMBER doc_origin

Dokumente werden in der Regel bezeichnet als '2012/XY/005', das wäre das fünfte Dokument von XY im Jahr 2012. So muss die Nummer in dem Jahr, in dem sie erstellt wurde, und für denselben Ursprung eindeutig sein, und ich muss eine Einschränkung dafür setzen.

Was wäre der beste Weg, dies mit JPA zu modellieren und zu kartieren?

Ich glaube, meine Optionen sind:

Option 1: ein weiteres Feld für das Jahr Datum Erstellung des Dokuments Einheit setzen, und sie einzigartig machen (Jahr, DOC_NUMBER, doc_origin)

Option 2 : erstellen Sie ein Feld wie 'YEAR/ORIG/NUMBER' und machen Sie es einzigartig (doc_ref)

Beide Optionen fügen ein weiteres Feld das Jahr duplizieren, aber Option 1 erfordert, dass ich Feldjahr konsistent mit date_creation aktualisieren und Optio n 2 erfordert, dass ich Feld doc_ref konsistent mit dem Rest aktualisiere, so dass ich denke, dass Option 1 am besten ist.

Gibt es eine andere Option, die ich nicht sehe? Danke!

Antwort

0

Sie könnten einen funktionsbasierten eindeutigen Index verwenden, wenn Ihre Datenbank dies zulässt. Beispiel in Oracle:

CREATE UNIQUE INDEX YEAR_ORIGIN_NUMBER_IDX 
on DOCUMENT (TRUNC(DT_CREATION, 'YEAR'), DOC_ORIGIN, DOC_NUMBER) 
+0

ja, aber ich brauche das in JPA auch zu arbeiten, wissen Sie, ob es möglich ist? – elias

+0

Eine eindeutige Einschränkung wird auf eine Datenbanktabelle angewendet. JPA hat damit nicht viel zu tun. Sie können eindeutige Einschränkungen mithilfe von JPA-Anmerkungen definieren, die jedoch nur dann verwendet werden, wenn die JPA-Implementierung Ihre Datenbanktabellen (oder DDL) für Sie erstellt. Am Ende lebt die Einschränkung in der Datenbank. –

+0

Gemäß der Dokumentation [hier] (http://openjpa.apache.org/builds/1.0.2/apache-openjpa-1.0.2/docs/manual/jpa_overview_mapping_unq.html) muss die JPA-Laufzeit auch eine Constraint-Deklaration enthalten und stellen Sie die Reihenfolge der Anweisungen sicher, um eindeutige Einschränkungsverletzungen zu vermeiden. – elias