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 ответа
Убедитесь, что вы указали, какие атрибуты nullable
в constraint
пункт. В вашем случае атрибут superSub может быть нулевым:
superSub nullable: true, maxSize: 1
Если вы не указываете обнуляемый атрибут в предложении ограничения, явно Grails ожидает значения для них.