我有两个域类User和Node。应满足以下条件。
我试过了:
class User {
Node node
}
class Node {
// constructor
Node(User user) {
addToUsers(user)
save()
}
hasMany = [users: User]
}
前者不起作用。它不起作用,因为删除节点时,用户实例中存在一个不会自动删除的依赖引用。
在这种情况下,如何为域类建模?
答案 0 :(得分:2)
使用这样的连接表:
class User {
Set<Node> getNodes() {
UserNode.executeQuery("select x.node from UserNode x where x.user = :user", [user: this])
}
def addToNodes(Node node) {
def userNode = new UserNode()
userNode.user = this
userNode.node = node
userNode.save()
}
}
class Node {
Set<User> getUsers() { ... }
}
class UserNode {
User user
Node node
}
答案 1 :(得分:0)
将node
标记为可为空,并向User类添加cascade
映射,指定要级联的操作:
class User {
Node node
static constraints = {
node nullable: true
}
static mapping = {
node cascade: 'save-update,delete'
}
}