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.