Grails JoinTable с устаревшей базой данных - PullRequest
0 голосов
/ 26 марта 2011

У меня есть таблица таблиц «один ко многим», которую я хочу сделать с граалями. У меня есть устаревшая база данных, где я не могу изменить структуру таблицы. У меня все настроено, но единственное, что я не могу понять, это как заставить граалы замечать существующие внешние ключи вместо создания своего собственного столбца. У меня что-то вроде этого (упрощенно):

class Customer {
    String listID
    String name
    String address
    // more fields etc.

    static hasMany [notes : Note]

    static mapping = {
        table name:"customers"
        id name:"listID",generator:"assigned"

        // doesn't work, creates a foreign key column in customer_notes table
        // with key: customer_id. I want it to just use the existing column
        // CustomerListID, which has the correct foreign key
        notes joinTable:[name:"customer_notes",key:"CustomerListID"]            
    }
}

class Note {
    String noteID
    String customerListID

    static mapping = {
        table name:"customer_notes"
        id name:"NoteID",generator:"assigned"
     }
}

В качестве примечания, я вижу, что joinTable в документе grails говорит, что «столбец» - это обратный столбец, а «ключ» - это внешний ключ. Примеры в документах не помогают. У меня есть «Grails в действии», и он говорит, что собирается предоставить пример «один ко многим», затем показывает пример «многие ко многим», и в любом случае это не полный пример (половина модели отсутствует). !

Есть идеи? У меня есть эта устаревшая база данных, и я собираюсь использовать ее только для чтения. Я просто хочу, чтобы картограф O / R хорошо все связывал.

1 Ответ

0 голосов
/ 26 марта 2011

В вашей объединяемой таблице в доменном объекте Customer должен использоваться столбец, а не ключ:

notes joinTable:[name:"CustomerNotes",column:"CustomerListID"]

Кроме того, имя: должно быть именем таблицы объединения, а не именем таблицы заметок.

...