grails - 在Grails中为同一域类创建一对多和多对多

标签 grails groovy grails-2.0 groovy-console

我想创建一个域类,例如,一个用户可以发布多个订单(双向),一个订单可以被很多用户喜欢(单向)。

我编写了如下所示的域类,

Class User {

  String userName;

  List orders 

  static hasMany = [Order]
}

Class Order {

    String orderId

    String orderName

       //Indicates this order belongs to only one user
    static belongsTo =[owner : User ]  // Bidirectional

    //Indicates order can be liked by many users
    static hasMany = [likedUser : User]   //Unidirectional
 } 

但是我说错误的模式是错误的。任何人都请帮忙...

这个post看起来类似于我的问题,但我没有得到,请帮忙。

最佳答案

首先,order是SQL中的保留字。由于GORM默认情况下会创建一个与您的类同名的表,因此您需要重命名您的类或提供其他名称以映射到SQL表时使用。

例如:

class Order {
    static mapping = {
        table 'user_order'
    }
    // ...
}

另一个问题是Order包含与User的两个关联。您需要告诉GORM其中哪一个是从UserOrder的双向关联。可以使用mappedBy来实现,如下所示:
class User {
    String userName

    static hasMany = [orders: Order]
    static mappedBy = [orders: 'owner']

}

希望这可以帮助。

关于grails - 在Grails中为同一域类创建一对多和多对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23843837/

相关文章:

grails - 什么是内联插件?

grails - 谷歌地方 API : Adding a new Place: Java/Groovy

JavaScript 无法在 Grails/GSP 中运行

spring - 在Grails中模拟帖子-Spring身份验证

java - 即使指定了 Path 变量,如何修复 "CreateProcess error=2, The system cannot find the file specified"(跨平台)

mysql - 我怎么知道我的执行语句工作正常?

grails - 从对象读取字符串

grails - 尝试从 Grails 应用程序中的长数字中删除逗号

grails - 将 IntelliJ 从 Grails 1.1 升级到 Grails 1.1.1

grails - 在GSP Grails中拆分字符串