Grails GORM: Wie erstelle ich einen zusammengesetzten Primärschlüssel, und verwenden Sie es für eine Tabelle Beziehung?

Ich habe zwei Tabellen, von denen eine (legacy-Tabelle: A) hat zwei Felder, die dazu dienen sollte, einen zusammengesetzten Fremdschlüssel und die andere (neue Tabelle: B) verwenden Sie einen zusammengesetzten Primärschlüssel für eine each row:A has one row:B Beziehung. Wie kann ich diese beschreiben Tabellen in Bezug auf GORM?

So weit ich habe in der Lage, erstellen Sie eine domain-Klasse, spiegelt das Erbe Tisch:Ein

class A {

    ...
    //composite foreign key to link B class
    String className;
    String eventName;

    B b; //instance of B to be related

    static mapping = {
        table 'a_table';            
        id column: 'id';
        className column: 'class_name';
        eventName column: 'event_name';
        //b: ???
    }
}

die funktioniert, aber ich kann nicht erstellen Sie eine new class:B und die Beziehung.

Habe ich versucht zu erklären, B:

class B implements Serializable{

    static auditable = true;

    String name;
    String className;
    String eventName;

    static mapping = {
        //supposed to make a composite PK
        id composite:[className, eventName] 
    }
}

aber dieser Code wird nicht kompiliert, mit ein
ERROR context.GrailsContextLoader - Error executing bootstraps: Error evaluating ORM mappings block for domain [com.package.B]: No such property: eventName for class: org.codehaus.groovy.grails.orm.hibernate.cfg.HibernateMappingBuilder

Was ich will, ist so etwas wie:

static mapping = {
    ...
    b composite: [b.className:className, b.eventName:eventName]
    //or whatever is the right way for this to be done.
}

für die A-Klasse zu machen GORM Griff dieser Beziehung.

InformationsquelleAutor svz | 2013-02-06

Schreibe einen Kommentar