【发布时间】:2013-07-17 14:35:27
【问题描述】:
我有一个 Grails 2.2.3 域类,当我使用动态脚手架时,它会抛出关于我的复合 id 的 NullPointerExeption。我只会使用pidm 字段作为主键,但偶尔有两条记录具有相同的pidm(相同的员工,但可能有名称更改或其他原因)并且Grails 有/show/ URI 有问题,因为返回了多行。这就是changeIndicator 的用武之地——如果changeIndicator 为空,则它们是当前员工。我想知道问题是否在于 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
【问题讨论】:
-
所以你有名为
table的表? [table 'table'] -
不,我只是觉得不输入db表名会更安全。忽略这一点。编辑:我改变了它,所以现在更有意义了。
-
您是如何尝试访问此域类的?控制器代码是调试您访问
Employee的位置所必需的。 -
我试图通过
static scaffold = true访问课程。问题可能是 Hibernate 不允许复合主键中的可空列,因为 CHANGE_IND 列中肯定有一些空值。
标签: grails nullpointerexception grails-orm composite-key grails-domain-class