-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 
Author Message
 Post subject: Unique index auf mehrere Spalten
PostPosted: Tue Feb 24, 2009 9:49 am 
Newbie

Joined: Tue Feb 24, 2009 9:36 am
Posts: 2
Hallo Forum!

Ich suche nach einer Möglichkeit einen unique index auf 2 spalten zu legen, so dass die Kombination dieser 2 Felder unique ist.

Ich habe bisher mit den @Index und @UniqueConstraint Annotations rumgespielt, aber das ist wohl nicht ganz das was ich will.
Soweit ich das bisher versatnden habe, hat das nur die Auswirkung das durch hibernate erstellte Tabellen einen constraint bekommen.

Nun ich möchte keinen Constraint auf die DAtenbank legen, sondern suche nach einer Möglichkeit das per Annotations zu machen, so dass vor dem commit geprüft wird ob der constraint verletzt wird.

Ist das so überhaupt möglich?

Ich habe jetzt seit tagen immer mal wieder danach gegoogled, aber nix brauchbares dabei gefunden.

Im vorraus schon mal danke,

mfg Vino


Top
 Profile  
 
 Post subject:
PostPosted: Tue Feb 24, 2009 10:23 am 
Expert
Expert

Joined: Thu Jan 08, 2009 6:16 am
Posts: 661
Location: Germany
Du kannst Unique-Constraints auf mehrere Spalten legen, indem du die Table-Annotation verwendest:
Code:
@Table(name="tbl_sky",
    uniqueConstraints = {@UniqueConstraint(columnNames={"month", "day"})}
)


Dies bewirkt aber wirklich eine constraint auf der Datenbank. Wer soll denn vorm Speichern prüfen, ob die Daten valide sind? Normalerweise würde ich dir dafür das Hibernate Validator-Framework empfehlen, aber der unique-fall ist da so ein besonderer, weil du um zu prüfen ob die daten valide sind, ja eine connection zur datenbank brauchst, um zu gucken, ob es den Wert schon gibt, was normale Hibernate Validatoren nicht tun.

Ich empfehle dir, vorm Speichern selber zu prüfen, ob die Daten unique sind, am besten, in der Methode die ein Objekt speichern soll.

_________________
-----------------
Need advanced help? http://www.viada.eu


Top
 Profile  
 
 Post subject:
PostPosted: Tue Feb 24, 2009 10:37 am 
Newbie

Joined: Tue Feb 24, 2009 9:36 am
Posts: 2
Ja die hatte ich shcon gefunden. ist leider nicht das was ich möchte/brauche.

Sleber zu prüfen hat eine so umfangreiche änderung am programm zur folge, das ich das gerne umgangen hätte, aber naja mir bleibt wohl nichts anderes übrig :(

schade aber jetzt weiss ich wenigstens das es nicht möglich ist.


mfg vino


Top
 Profile  
 
 Post subject:
PostPosted: Mon Mar 02, 2009 3:25 am 
Senior
Senior

Joined: Tue Oct 28, 2008 10:39 am
Posts: 196
Und was bringt es dir, wenn du weißt, dass in dem Moment in dem du nachgesehen hast, ob der Wert schon vorhanden ist?
Wenn zwei User das parallel machen und jeder findet keinen Wert und macht dann ein Insert, dann hast du den Salat - beide User konnten schreiben. Wenn ein fachlicher Schlüssel nicht doppelt vorkommen darf, dann ist das ein klarer Fall für einen Constraint. Oder für eine regelmäßige Plausibilierung der Daten, wobei du dann möglichweise vor dem Problem stehst, nicht zu wissen, welcher Satz nun genommen werden soll. Also Fehlerlisten für die User, die das dann wieder gradebügeln sollen.
Was spricht denn gegen das Anlegen von Constraints?


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.