0

当我尝试使用 GORM 中的 get 函数检索域类对象时,我得到了 StringIndexOutOfBoundsException。

域类

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 数据库表

身份证 | int(10) 无符号
PROFILEID | bigint(20) 无符号用户名 | varchar(40)
类型 | 字符(1)
SUPER_SUB | 字符(1)
时间 | varchar(14)
类 | char(1)
ISAPILOGIN | 微小的(1)

我的控制器

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 | 时间 |课程|ISAPILOGIN

1001 | 4 | 阿比纳夫 | | 磷 | 1461235989 | 一个 | 0

1002 | 5 | 加文 | 小号 | 电话 |1450155084 | 一个 | 1

当我在 ID 1001 上调用 get 而不是在 ID 1002 上调用时出现异常。我认为的原因是,对于 ID 1001,类型列有一个空值或空格,但对于 ID 1002,类型有一个字符值“S”。我的表有很多空值的行,所以我能做些什么来避免这个异常?

4

2 回答 2

0

确保您指出哪些属性nullableconstraint子句中。在您的情况下,属性 superSub 可以为空:

superSub nullable: true, maxSize: 1

如果您没有在约束子句中明确指出可为空的属性,Grails 期望这些属性有一个值。

于 2016-04-30T15:15:14.020 回答
0

我认为您应该从域类中删除“id”字段。

于 2016-04-30T12:17:24.537 回答