Как создать составной первичный ключ с помощью GORM?

У меня есть три класса предметной области: пиво, рецензент и рецензент.

Я хочу, чтобы таблица Review создавала отношения «многие ко многим» между Beer и Reviewer, поэтому я хочу, чтобы первичный ключ Review был составной частью полей id из Beer и Reviewer. Я использую эту документацию Grails.

http://grails.org/doc/latest/guide/5.%20Object%20Relational%20Mapping%20 (GORM) .html # 5.5.2. 5% 20Composite% 20Primary% 20Keys

Вот мои классы домена.

class Beer {
    String name
    String type
    Brewery breweryId

    static hasMany = [ reviews : Review ]

    static constraints = {
    }
}

class Reviewer {
    String screenName

    static hasMany = [ reviews : Review ]

    static constraints = {
    }
}

class Review implements Serializable {
    int score
    Beer beer
    Reviewer reviewer


    static constraints = {
    }

    static mapping = {
        id composite:['beer', 'reviewer']
    }
}

Я получал ошибки компиляции, но в другом ответе на stackoverflow говорилось, что мне нужно добавить реализует Serializable . Это устранило ошибку, но когда я смотрю в базу данных, я все еще не получаю составной первичный ключ.

Вот что я вижу, когда смотрю на определение таблицы. Я использую Postgres.

       Table "public.review"
   Column    |  Type   | Modifiers 
-------------+---------+-----------
 id          | bigint  | not null
 version     | bigint  | not null
 beer_id     | bigint  | not null
 reviewer_id | bigint  | not null
 score       | integer | not null
Indexes:
    "review_pkey" PRIMARY KEY, btree (id)
Foreign-key constraints:
    "fkc84ef75823f39326" FOREIGN KEY (beer_id) REFERENCES beer(id)
    "fkc84ef7587c483106" FOREIGN KEY (reviewer_id) REFERENCES reviewer(id)

Я был бы доволен только составным индексом с уникальным ограничением, но я тоже не могу понять, как это сделать. Мне удалось создать неуникальный составной индекс, но здесь есть две проблемы. Во-первых, это не уникально. Во-вторых, столбцы указаны в алфавитном порядке в индексе (beer_id, reviewer_id). Я хочу указать порядок столбцов в индексе.

5
задан haydenmuhl 31 March 2011 в 15:50
поделиться