我想创建一个域类,例如,一个用户可以发布多个订单(双向),一个订单可以被很多用户喜欢(单向)。
我编写了如下所示的域类,
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其中哪一个是从User
到Order
的双向关联。可以使用mappedBy
来实现,如下所示:class User {
String userName
static hasMany = [orders: Order]
static mappedBy = [orders: 'owner']
}
希望这可以帮助。
关于grails - 在Grails中为同一域类创建一对多和多对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23843837/