0

我想连接到旧数据库。我的旧数据库正在使用 postgresql。我使用 db-reverse-engineer 插件生成域类,生成的域类:

class TableLogin {

    String username
    String password
    Integer userLevel

    static mapping = {
        id name: "username", generator: "assigned"
        version false
    }

    static constraints = {
        username maxSize: 30
        password nullable: true, maxSize: 36
        userLevel nullable: true
    }
}

我跑generate-all了,动作列表工作正常。但是,当我单击其中一个数据/用户名(执行显示操作)时,出现此错误: TableLogin not found with id null

我尝试使用此代码进行跟踪:

    def rowLogin = TableLogin.get("supervisor")
    log.error(rowLogin as JSON)

我得到了:

{"class":"webnico.TableLogin","id":null,"password":"2dcc509a6f7584","userLevel":0,"username":"supervisor"}

为什么id是 null ?我认为因为 id 为 null 所以 show 操作不起作用


我更新了我的域类,成为:

class TableLogin {

    String id

    String username
    String password
    Integer userLevel

    static mapping = {
        id name: "username", generator: "assigned"
        version false
    }

    static constraints = {
        username maxSize: 30
        password nullable: true, maxSize: 36
        userLevel nullable: true
    }

    def afterLoad() {
        id = username
    }
}

id不再为空

{"class":"webnico.TableLogin","id":"supervisor","password":"2dcc509a6f7584","userLevel":0,"username":"supervisor"}

但是,表演动作仍然不起作用。显示 URL 似乎是正确的,http ://mylocalhost.com:9000/webnico/tableLogin/show/supervisor 但我仍然遇到同样的错误:TableLogin not found with id null

这是否意味着当类型不是时我们不能使用脚手架(generate-all)?idLong

4

1 回答 1

0

啊哈... show action 不能正常工作,因为默认情况下 show action 的参数是 Long。所以,我们需要将参数类型修改为String。

    def show(Long id) {
...
    }

变得

    def show(String id) {
...
    }

当然,我们还需要修改其他需要id参数的操作(编辑、更新、删除)。

于 2013-10-17T08:28:46.303 回答