Grails复合id抛出NullPointerException

时间:2013-07-17 14:35:27

标签: grails nullpointerexception gorm composite-key grails-domain-class

我有一个Grails 2.2.3域类,当我使用动态脚手架时,它会抛出关于我的复合id的NullPointerExeption。我只会使用pidm字段作为主键,但偶尔会有两条记录具有相同的pidm(同一员工,但可能会更改名称或其他内容) )和Grails的/ show / URI有问题,因为返回了多行。这就是changeIndicator的来源 - 如果changeIndicator为null,则它们是当前的Employee。我想知道问题是pidm和changeIndicator有两种不同的类型。

有谁知道错误可能是什么?

以下是课程和错误:

class Employee implements Serializable {

Integer pidm
String sid
String firstName
String lastName
String middleInitial
Character changeIndicator

static mapping = {
    table 'employee'

    id composite: ['pidm', 'changeIndicator']
    columns {
        pidm column: 'PIDM'
        changeIndicator column: 'CHANGE_IND'
        // more mappings
    }
    version false
}

错误:

URI
/phoneauth/employee/list
Class
java.lang.NullPointerException
Message
Cannot get property 'id' on null object

2 个答案:

答案 0 :(得分:3)

您的主要问题是Hibernate不允许可以为空的列作为复合主键的一部分。

其次,Grails scaffold插件不能很好地处理复合键。

答案 1 :(得分:0)

您可以生成视图并将所有模型的所有建议明确显示在indesx.gsp中(示例):

我希望这是有道理的!