-
Notifications
You must be signed in to change notification settings - Fork 0
Bootstrap
Um nach dem Start einer Grails App, bereits Daten zu initialisieren, können in der Datei bootstrap.groovy Objekte erzeugt werden.
Damit ein erzeugtes Objekt in der zugehörigen relationalen Datenbank gespeichert werden kann, führt das Framework Hibernate eine sogenannte Transaction aus.
Um dies auch während der Initialisierung in der Bootstrap-Datei zu erreichen, muss die Erzeugung der Objekte als Transaction gekennzeichnet werden.
Dies kann durch die Notation mit @Transactional oder der Punkt-Notation <classname>.withTransaction erreicht werden.
Ausgelöst wird die Transaction durch den Parameter flush im Befehl save(flush:true).
Desweiteren muss die Datei Application.yml durch einen Eintrag ergänzt werden, damit die Transaction innerhalb der Bootstrap Datei erlaubt ist.
Dabei darf das Projekt nicht getartet sein.
Ergänzen Sie in der Datei hinter dem Eintrag hibernate folgende Zeile:
hibernate:
allow_update_outside_transaction: truepackage deputat
import grails.transaction.*
class BootStrap {
def init = { servletContext ->
Raum.withTransaction{
//Lehrerzimmer mit Lehrern
//addToLehrer fügt Lehrerobjekte zur Liste [lehrer:Lehrer] hinzu
def r1 = new Raum(nummer:227, maxAnzahlPersonen:2)
r1.addToLehrer(new Lehrer (kurzname:'ko', nachname:'Knorre'))
r1.addToLehrer(new Lehrer (kurzname:'lb', nachname:'Laber'))
r1.save(flush:true)
}This wiki was created using Grails version 4.0.9 and Java 1.8.0_281!
The wiki was last updated with the release of the Tag v0.1.3-PrototypeForRating!