| 

.NET C# Java Javascript Exception

Contraints

Dies ist das Archiv des ehemaligen Forums zum Thema Groovy, Grails, Griffon und Bean Scripting Framework, welches unter groovy-forum.de existierte. Die neue Adresse des Groovy-Forums ist: http://codekicker.de/fragen/themen/groovy.


Contraints

ProgFish - 11.05.2010 10:55
Hallo,

ich soll ein vorhandenes Programm, welches mit Grails erstellt wurde, anpassen.
Hierzu musste ich in der Datenbank ein weiteres Feld hinzufügen und habe dafür auch gleich ein unique Constraint in der Datenbank angelegt.
Es geht darum, dass die Kombination aus Schlüsselnr und Kennzeichen eindeutig sein muss und die Kombination aus Spindnr. und Kennzeichen.
Hier für habe ich nach kurzer Suche folgendes Beispiel gefunden:
kennz(unique: 'schluesselnummer', 'kennz')

das hab ich dann folgendermaßen in meine Domain-Klasse eingefügt:


class Mitarbeiter {

	String name
	Integer persNr
	Integer spindnummer
	Integer schluesselnummer
	String kennz
	String mar1
	String mar2

    static constraints = {
		name(blank: true)
		persNr(blank: true, unique: true)
		spindnummer(blank: false)
		schluesselnummer(blank: false)
		kennz(blank: false)
		mar1(blank: true)
		mar2(blank: true)
		id1(unique: 'spindnummer', 'kennz')
		id2(unique: 'schluesselnummer', 'kennz')
	
    }
}

allerdings wenn ich die danach erstellte WAR-Datei von meinem Tomcat entpacken und starten lasse, kommt immer folgende Meldung:

11.05.2010 10:46:09 org.apache.catalina.core.StandardContext start
SCHWERWIEGEND: Context [/ssn-0.1] startup failed due to previous errors
11.05.2010 10:46:09 org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
SCHWERWIEGEND: A web application created a ThreadLocal with key of type [null] (value [org.codehaus.groovy.reflection.ClassInfo$1@1e779a7]) and a value of type [org.codehaus.groovy.reflection.ClassInfo.LocalMap] (value [{}]) but failed to remove it when the web application was stopped. To prevent a memory leak, the ThreadLocal has been forcibly removed.
11.05.2010 10:46:09 org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
SCHWERWIEGEND: A web application created a ThreadLocal with key of type [org.codehaus.groovy.runtime.GroovyCategorySupport.MyThreadLocal] (value [org.codehaus.groovy.runtime.GroovyCategorySupport$MyThreadLocal@1a81bd5]) and a value of type [org.codehaus.groovy.runtime.GroovyCategorySupport.ThreadCategoryInfo] (value [{}]) but failed to remove it when the web application was stopped. To prevent a memory leak, the ThreadLocal has been forcibly removed.
11.05.2010 10:46:09 org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
SCHWERWIEGEND: A web application created a ThreadLocal with key of type [org.springframework.core.NamedThreadLocal] (value [Prototype beans currently in creation]) and a value of type [null] (value [null]) but failed to remove it when the web application was stopped. To prevent a memory leak, the ThreadLocal has been forcibly removed.

wenn ich diese Prüfung ausbaue, dann läuft das Programm, allerdings wenn ich eine doppelte Schlüsselnr bei gleichem Kennzeichen eingebe, bekomme ich eine richtige Fehlerseite im Browser angezeigt, als wenn der Fehler nicht abgefangen wird:

Grails Runtime Exception
Error Details
Error 500:
Servlet: default
URI: /ssn-0.1/mitarbeiter/index
Exception Message: [SQL0803] Doppelter Schlüsselwert angegeben.
Caused by: could not update: [Mitarbeiter#1]; nested exception is org.hibernate.exception.ConstraintViolationException: could not update: [Mitarbeiter#1]
Class: Unknown
At Line: [-1]
Code Snippet:

Kann mir da bitte jemand helfen ?

MFG


Re: Contraints

milkyman - 11.05.2010 15:13
Wenn du diese Fehlermeldung statt der hübschen bzgl. Constraints bekommst, dann haben die Grails-Constraints nicht gegriffen und erst die Constraints der Datenbank.

Schreib doch bitte mal
a) wie du die constraints in der DB konfiguriert hast
und
b) welche Werte es schon in der DB gab und welche du für den neuen User eingegeben hast


Dass es Schlüssel und Spinde nur einmal gibt, ist nachvollziehbar. Aber mir ist nicht ganz klar, welche Bedeutung dein "Kennzeichen" hat. Was steht da drinnen?

Bye,
Horst


Stelle deine Groovy-Frage jetzt!


Diese Seite zeigt den Thread "Contraints" der ehemaligen Webseite groovy-forum.de, welche durch einen Serverunfall zerstört wurde. codekicker.de hat viele Konversationen über die beliebte Programmiersprache Groovy und zugehörige Frameworks wie das Grails-Framework retten können.

Hast Du eine Frage zum Thema Groovy, Grails oder allgemein Java? Viele ehemalige groovy-forum.de Mitglieder beantworten dir auf codekicker.de deine Frage! Stelle jetzt eine Frage!

Viele weitere Diskussionen zu Grails und Groovy befinden sich auf der Threadübersicht des alten groovy-forum.de.