【问题标题】:Employee not found with id null grails找不到 ID 为空 grails 的员工
【发布时间】:2012-07-31 20:33:27
【问题描述】:

谁能帮我解决我的情况。我有以下代码。

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。做到了。这是我的代码。

类员工{ 长身份证 长empId 字符串名 字符串姓氏

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
}

}

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

问候

洛基

【问题讨论】:

  • 还有一件事,我正在运行 generate-all Employee,如果有帮助的话。是不是generate-all不工作除非主键是id。
  • 好的。因此,您正在为您的对象分配 ID,对吗?您是否会发布您的更新并保存操作,以便更轻松地了解发生了什么?
  • 嘿蒂亚戈,你是个好帮手。我没有创建任何特殊的保存或更新,只是使用 grails 来生成所有这些。但是,我找到了一种解决方法。这就是我所做的

标签: grails groovy


【解决方案1】:

如果您使用的是“分配”序列,那么您必须在保存对象之前自己分配对象 ID。否则,您的对象将使用 null 或“默认 0”id 保存。如果你想让 GORM 为你分配一个 id,你需要使用另一种类型的生成器,比如“sequence”生成器。就像:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-23
    • 1970-01-01
    • 2012-10-19
    • 2015-06-22
    • 2012-07-28
    • 2015-11-18
    相关资源
    最近更新 更多