带有hasMany的Grails动态脚手架:它是一个bug还是我错误配置?

Pet*_*ete 7 grails has-many

我是一个Grails noob并遇到了似乎是一个bug的东西,但完全有可能我没有正确配置所有东西.

我有两个简单的域类:

   class Player {

        String firstName
        String lastName

        static constraints = {
            firstName(blank:false)
            lastName(blank:false)
        }
        String toString() { lastName + ", " + firstName }
    }
Run Code Online (Sandbox Code Playgroud)

class Team {

    String mascot;
    static hasMany = [players:Player]

    static constraints = {
        mascot(blank:false)
    }
}
Run Code Online (Sandbox Code Playgroud)

我有控制器,除了动态脚手架这两个域类之外什么都不做.

但是即使我在我的数据库中有一个玩家列表,在创建新团队时我也没有为他们提供多选框.

但是,当我去编辑团队时,会显示多项选择

这是新项目的动态脚手架中的错误,我是否误解了它应该如何工作,或者我需要在这里声明一些其他内容吗?

任何帮助都非常感谢!我有截图,StackOverflow不会因为我的新意而让我添加,但如果有帮助的话,我很乐意向他们展示另一种方式.

bil*_*dev 1

是的,默认的脚手架将父选择器放在子类的创建/编辑页面中。

我猜这样对他们来说更容易。但它不应该是多选,而只是下拉单选,因为它是一对多。

正如您所解释的,您想要更多的多对多关系,您可以尝试添加:

static hasMany = [teams:Team]
Run Code Online (Sandbox Code Playgroud)

到你的 Player 类。我发现 Grails 在双向关系方面做得更好。在构建搜索查询时它也很有用,并且不需要超过您已经需要的一个关系表。

如果您使用的是 v1.1 之前的 Grails,则不直接支持多对多关系,因此即使添加上面的静态 hasMany 也不是完整的解决方案,因为您需要管理添加到另一个添加到一个方向时列出。我还没有使用过v1.1,所以无法谈论其中指定Many-to-Many需要什么。