Grails 生成控制器和视图时出错:无法将int字段lms.Book.bookId设置为java.lang.Class

Grails 生成控制器和视图时出错:无法将int字段lms.Book.bookId设置为java.lang.Class,grails,grails-domain-class,grails-2.0,grails-controller,Grails,Grails Domain Class,Grails 2.0,Grails Controller,为域类生成控制器和视图时,如下所示: class Book { static constraints = { bookId blank:false bookTitle blank:false } private int bookId private String bookTitle private String author private double price private Date editio

为域类生成控制器和视图时,如下所示:

class Book {

    static constraints = {
        bookId blank:false
        bookTitle blank:false
    }

    private int bookId
    private String bookTitle
    private String author
    private double price
    private Date edition
    private String publisher
}
给出错误说明: 无法将int字段lms.Book.bookId设置为java.lang.Class

将“int”更改为“Integer”(也将“double”更改为“double”),例如

此外,我怀疑您是否可以对整数设置“空白”约束,请将其更改为:

bookId nullable: false

假设这是您想要的(或者完全删除它,因为nullable:false约束是隐式的)。

我认为如果您在字段声明中添加“private”,您必须为此字段编写getter和setter:

class Book {

    static constraints = {
        bookId blank:false
        bookTitle blank:false
    }

    private Integer bookId
...
    Integer getBookId() { this.bookId }

    void setBookId(Integer bookId) { this.bookId = bookId }
....
}

我的答案解决了你的问题吗?这个答案是正确的。您必须将它们声明为公共的或自己提供getter/setter。不知道为什么这个答案没有标记?
class Book {

    static constraints = {
        bookId blank:false
        bookTitle blank:false
    }

    private Integer bookId
...
    Integer getBookId() { this.bookId }

    void setBookId(Integer bookId) { this.bookId = bookId }
....
}