grails - GORM不会在两个类之间的一对多关系中创建表

标签 grails gorm

我是不熟悉Grails的人,我试图用它来创建某些东西,但是在域设计方面存在重大问题。

基本上,我想做一个这样的结构:

用户有很多购物篮

购物篮有很多用户,里面有很多盒子,可以有很多珠宝

一个盒子在篮子里,里面有很多珠宝

每个珠宝都有许多所有者。

用户可以创建篮子,可以在篮子中放置(创建)盒子,在盒子中可以放置(创建)珠宝,可以添加/删除其他用户(也成为所有者)
对于购物篮和珠宝,如果他将自己从购物篮所有权中删除,则其他用户仍然拥有购物篮,如果没有人拥有购物篮,则该用户消失。

用户可以删除一个盒子,并且珠宝盒内的珠宝在篮子的末端,用户可以在珠宝盒中编辑珠宝。

我来了那些域,但它们似乎不起作用,当我创建篮子时,它不会将自己添加到用户篮子列表中,也不会填充篮子用户列表。

class User{

    String name

    static hasMany = [basketList: Basket, jewelList: Jewel, kanbanCards: KanbanCard]

    }

class Basket{

    String name

    static hasMany = [userList: User, boxList: Box, jewelList: Jewel]

    }

class Box{

    String name
    static belongsTo = Basket
    static hasMany = [jewelList: Jewel]

    }


class Jewel{

    String name
    static belongsTo = Basket
    static hasMany = [userList: User]

    }

这些域中的任何一个对吗?我想让它工作的是什么?

编辑:

所以现在我修改了这样的域:
class User{

    String name

    static hasMany = [basketList: Basket, jewelList: Jewel, kanbanCards: KanbanCard]
    static mapping = { //added joinTable proprerty for many-to-many
        basketList joinTable: [name: "mm_user_basket", key: 'mm_user_id' ]
    }

    }

class Basket{

    String name

    static belongsTo = User //added belongsTo
    static hasMany = [userList: User, boxList: Box, jewelList: Jewel]

    static mapping = { //added joinTable proprerty for many-to-many
        userList joinTable: [name: "mm_user_basket", key: 'mm_basket_id' ]
    }

}

class Box{

    String name
    static belongsTo = Basket
    static hasMany = [jewelList: Jewel]

    }


class Jewel{

    String name
    static belongsTo = Basket
    static hasMany = [userList: User]

    }

当我尝试创建购物篮(使用支架创建方法)时,我具有所有用户的列表,我选择其中一个,但是当我保存时,它将创建一个新的购物篮,其名称仅与用户无关。

最佳答案

用户或购物篮都必须“拥有”该关系,以便将新对象级联到该关系。

因此,您必须添加到Basket类:

static belongsTo = User

您可以在此处阅读详细信息:

https://chrisbroadfoot.id.au/2008/07/19/many-to-many-relationship-mapping-with-gorm-grails/
http://docs.grails.org/3.1.1/ref/Database%20Mapping/joinTable.html

关于grails - GORM不会在两个类之间的一对多关系中创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45209951/

相关文章:

grails - 如何在 GSP 中使用 openid4java 实现 openID

grails - 映射单向1:M

hibernate - Grails:无法将数据库状态与 session 同步

grails - withForm没有使用Grails 2.2.4将模型数据传递给gsp

json - grails使用json构建器构建数组

grails - hasMany没有获取记录

grails - 查询中GORM中的悲观锁定

inheritance - Grails/GORM:继承的域类的行为不一致(测试VS Bootstrap)

grails - Groovy控制台无法 “remember”任何变量-总是说 “unknown property”

mysql - Grails id 映射自动增量 - MySQL