StringIndexOutOfBoundsException при получении функции в GORM

Я получаю StringIndexOutOfBoundsException, когда пытаюсь получить объект класса домена, используя функцию get в GORM.

ДОМЕН КЛАСС

class Connect {
    int id
    long profileid
    String username
    char type
    char superSub
    String time
    char class_
    boolean isapilogin

    static mapping = {
        table "CONNECT"
        version false
        id column: "ID"
        profileid column: "PROFILEID"
        username column: "USERNAME"
        type column: "TYPE"
        superSub column: "SUPER_SUB"
        time column: "TIME"
        class_ column: "CLASS"
        isapilogin column: "ISAPILOGIN"

    }

    static constraints = {
        username maxSize: 40
        type maxSize: 1
        superSub maxSize: 1
        time maxSize: 14
        class_ maxSize: 1
    }
}

ТАБЛИЦА ДАННЫХ MYSQL

ID | int (10) без знака
ПРОФИЛЕЙД | bigint(20) без знака ИМЯ ПОЛЬЗОВАТЕЛЯ | VARCHAR (40)
ТИП | символ (1)
SUPER_SUB | символ (1)
ВРЕМЯ | VARCHAR (14)
КЛАСС | символ (1)
ИСАПИЛОГИН | TINYINT (1)

MYCONTROLLER

class DemoController {
    def check() {
        int id = 1001;
        Connect data = Connect.get(id)  // exception at this line
        data.save()
        render "check"

    }
}

MYSQL ТАБЛИЦА ДАННЫХ

ID PROFILEID | ИМЯ ПОЛЬЗОВАТЕЛЯ | ТИП | SUPER_SUB | ВРЕМЯ | КЛАСС | ИСАПИЛОГИН

1001 | 4 | АБХИНАВ | | P | 1461235989 | A | 0

1002 | 5 | ГАВАН | S | P |1450155084 | A | 1

Исключение наступает, когда я вызываю get с идентификатором 1001, а не с идентификатором 1002. Я думаю, что причина в том, что для идентификатора 1001 столбец типа имеет пустое значение или пробел, а для идентификатора 1002 тип имеет значение символа 'S'. моя таблица у меня много строк с пустыми значениями, так что я могу сделать, чтобы избежать этого исключения?

2 ответа

Я думаю, что вы должны удалить поле "id" из класса домена.

Убедитесь, что вы указали, какие атрибуты nullable в constraint пункт. В вашем случае атрибут superSub может быть нулевым:

superSub nullable: true, maxSize: 1

Если вы не указываете обнуляемый атрибут в предложении ограничения, явно Grails ожидает значения для них.

Другие вопросы по тегам