Для Домена Grails действительно ли возможно не иметь никакого 'идентификатора'?

Действительно ли возможно составить таблицу, которая не имеет никакого 'идентификатора'? Например, это - мой домен:

class SnbrActVector {

    int nid
    String term
    double weight

    static mapping = {
        version false
        id generator: 'identity'
    }

    static constraints = {
    }
}

Когда я выполняю этот SQL-оператор, он перестал работать:

insert into snbr_act_vector values (5, 'term', 0.5)

Я проверил таблицу, и 'идентификатор' уже установлен на автоинкремент. Я думаю, что другая опция состоит в том, чтобы удалить сам 'идентификатор'. Или есть ли другое обходное решение для этого? Предположите, что это не опция изменить givent SQL-оператор.

7
задан firnnauriel 6 April 2010 в 05:49
поделиться

3 ответа

Попробуйте использовать: «id (generator: 'assign')» вместо «id generator: 'identity'» и посмотрите, удаляет ли это свойство автоинкремента из базы данных «id» столбец.

1
ответ дан 6 December 2019 в 14:02
поделиться

Вероятно, вам нужно указать, что nid - это столбец вашего идентификатора.

static mapping = {
    version false
    id generator: 'identity', column: 'nid'
}
4
ответ дан 6 December 2019 в 14:02
поделиться

Горму для работы требуется поле id. Вы можете подделать присвоенный идентификатор, используя временную переменную, как показано ниже. Геттеры и сеттеры сопоставляют поле nid с полем id.

При сохранении объекта домена с помощью этого метода вы должны сделать:

snbrActVectgor.save(insert:true)

потому что grails считает, что ненулевой идентификатор является постоянным экземпляром.

class SnbrActVector {
    Integer id
    // nid is the actual primary key
    static transients = ['nid']
    void setNid(Integer nid) {
        id = nid
    }
    Integer getNid() {
        return nid
    }

    static mapping = {
        version false
        id generator:'assigned', column:'nid', type:'integer'
    }
}
7
ответ дан 6 December 2019 в 14:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: