Ограничительное определение домена Grails

У меня есть приложение Grails с - упрощенный - доменный класс, который похож на это:

class Capacity {

static constraints = {              
    month(blank:false, nullable:false)
    company(blank:false, nullable:false)
}


Date month    
Company company
String note
...
}

Парная компания месяца должна быть уникальной. (Т.е. они должны быть первичным ключом в DB).

Как я могу определить такое ограничение?

Большое спасибо заранее

Luis

5
задан Rob Hruska 12 March 2010 в 17:58
поделиться

2 ответа

Так как вы хотите, чтобы это было композитный первичный ключ в БД, вам придется объявить, что отображение:

class Capacity implements Serializable {
    Date month    
    Company company
    String note
    ...

    static mapping = { 
        id composite:['month', 'company'] 
    } 
}

, который производит следующую таблицу (MySQL):

CREATE
    TABLE capacity
    (
        MONTH DATETIME NOT NULL,
        company_id bigint NOT NULL,
        version bigint NOT NULL,
        note VARCHAR(255) NOT NULL,
        PRIMARY KEY (MONTH, company_id),
        INDEX FKFBF514BA69595C7A (company_id)
    )
    ENGINE=MyISAM DEFAULT CHARSET=latin1
6
ответ дан 13 December 2019 в 19:27
поделиться

Это должно быть что-то вроде:

static constraints = {              
    month(blank:false, nullable:false, unique:'company')
    company(blank:false, nullable:false)
}

посмотрите http://grails.org/doc/latest/ref/constraints/unique.html .

5
ответ дан 13 December 2019 в 19:27
поделиться