2016-04-16 4 views
0

Ich habe eine Klasse SheetLayout mit dem folgenden:GORM kann nicht neue Einheit addTo mit create

private String size 
private int xPosition 
private int yPosition 

private Sheet sheet 
private Report report 

static belongsTo=[sheet : Sheet] 

und einem Klasse-Blatt mit dem folgenden:

@Id 
private String id 

private Date created = new Date() 
private Date modified 
private String title 
private int sheetIndex 
private String type 

private Dashboard dashboard 

static hasMany = [sheetLayouts : SheetLayout, slicersWidgets : SlicerWidget] 

static belongsTo=[dashboard : Dashboard] 

Jetzt versuche ich SheetLayout in jedem zu sparen möglicher Weg (mit oder ohne Sheet) und es funktioniert nicht. Einer meiner Optionen habe ich versucht:

def testsl(){ 
     Sheet s = Sheet.findById("AAAAAaaaaaAAAaaaAA") 
     SheetLayout sl = new SheetLayout() 
     sl.setxPosition(0) 
     sl.setyPosition(1) 
     sl.setSize("satas") 
     s.addToSheetLayouts(sl) 
     s.save(flush:true) 

    } 

und es ist einfach nicht funktioniert :(

jede Idee

+0

Sie benötigen kein 'privates Blatt ', wenn Sie' static gehört zu = [Blatt: Blatt] 'haben. Aber ich weiß nicht, ob es das Problem behebt –

+0

Danke, ich habe versucht, aber es hilft immer noch nicht. Ich denke, das ist, weil ich auch Entity Report haben, die statische hasMany hat = [SheetLayouts: SheetLayout] jetzt, wenn ich versuche, SheetLayout zu speichern, es funktioniert nicht, weil ich Wert in report_id in meinem SheetLayout Objekt haben muss. –

+0

Könnten Sie den Fehler Stacktrace posten, wenn es einen gibt? –

Antwort

0

GORM cannot create new entity using addTo

Ich glaube nicht, dass wahr ist, folgende Arbeiten?.:

Sheet.groovy

class Sheet { 
    // consider using GORM auto timestamp properties for these Dates... 
    Date created 
    Date modified 

    String title 
    int sheetIndex 
    String type 

    static hasMany = [sheetLayouts : SheetLayout] 
} 

SheetLayout.groovy

class SheetLayout { 
    String size 
    int xPosition 
    int yPosition 

    Sheet sheet 

    static belongsTo = [sheet : Sheet] 
} 

-Code Instanzen bestehen bleiben:

def now = new Date() 
    Sheet s = new Sheet(created: now, modified: now, title: 'Some Title', sheetIndex: 42, type: 'wilbur') 
    SheetLayout sl = new SheetLayout() 
    sl.setxPosition(0) 
    sl.setyPosition(1) 
    sl.setSize("satas") 
    s.addToSheetLayouts(sl) 
    s.save(flush:true, failOnError: true) 

Sie auch so etwas tun könnte:

def now = new Date() 
    Sheet s = new Sheet(created: now, modified: now, title: 'Some Title', sheetIndex: 42, type: 'wilbur') 
    s.addToSheetLayouts(xPosition: 0, yPosition: 1, size: 'satas') 
    s.save(flush:true, failOnError: true) 

Ich schlage vor, Sie prüfen die errors Eigenschaft nach zu retten versuchen, die Instanz und/oder verwenden failOnError:true.

EDIT:

ich gerade wieder lesen Ihr Beispiel und es sieht aus wie Ihre SheetLayout Klasse eine report Eigenschaft hat, dass Sie nicht initialisiert wird. Sofern Sie dies nicht mit nullable: true konfiguriert haben, wird dies ein Teil Ihres Problems sein.