未找到id为null null的员工

时间:2012-07-31 20:33:27

标签: grails groovy

有人可以帮我解决我的情况。我有以下代码。

class Employee {

    Integer empId
    String firstName
    String lastName

    static constraints = {
        empId()
        firstName()
        lastName()
    }

    static mapping = {
        id generator:'assigned', name:'empId'
        version false
    }
}

代码允许我通过“创建”保存员工,但会出现以下错误消息

“找不到ID为null的员工”,并且在列表中列出了所有员工,但点击任何Emp Id都会出现同样的错误。请帮忙。这让我疯了。

落基


感谢您的回复。就像我提到的那样,我能够将empId保存在数据库中,但仍然可以获得该消息,并查看带有指定ID的列表(empId)。该链接指向员工/显示,最后没有数字。但是employee / show / 22(empId)工作正常。 employee / edit / 22也可以,但更新不起作用。

我没有使用任何指定的序列。只是一些随机整数。也许更好的例子是使用SSN而不是empId。

再次感谢你。


你是一个很棒的帮助伙伴。感谢您的时间和耐心。我没有写任何特殊的更新或保存(我太新了,无法深入挖掘)。只使用grails来生成全部。但是,我确实找到了解决方法。我更改了域类以添加变量id(Long)并添加了empId setter方法以将empId值分配给id。这样做了。这是我的代码。

班级员工{     很长的身份     长期以来     String firstName     String lastName

static constraints = {
    empId()
    firstName()
    lastName()
}

static mapping = {
    id generator:'assigned', name:'empId', column: 'emp_id'
    version false
}

public void setEmpId(Long empId){
    this.empId = empId
    this.id = empId
}

}

如果您有更好的方法,请随时提出建议。

问候

落基

1 个答案:

答案 0 :(得分:0)

如果使用“已分配”序列,则必须在保存之前自行分配对象ID。否则,您的对象将以null或'default 0'id保存。如果您希望GORM为您分配ID,则需要使用其他类型的生成器,如“序列”生成器。这就像是:

id name: 'customId', generator: 'sequence', params: [sequence:'some_sequence']

有关ID生成器here的更多信息。