我在两个域类之间有一个关系:User和Bank,用户有很多银行,银行有很多用户,我称之为结果表,因为mm_user_banks
它保留了 MM 关系的两个表 ID。
class User {
String name
String password
Date createdAt = new Date()
Date loginAt
static hasMany = [banks:Bank]
static fetchMode = [banks: 'eager']
static constraints = {
}
static mapping = {
banks joinTable: [name: 'mm_user_banks', key: 'mm_user_id']
}
}
和银行...
class Bank {
Long id
String name
static belongsTo = User
static hasMany = [users:User]
static constraints = {
}
static mapping = {
id generator: 'assigned'
users joinTable: [name: 'mm_user_banks', key: 'mm_bank_id'], lazy: false
}
}
我也可以用银行保存用户,但问题是当我尝试从用户实例中检索银行列表时,即使mm_user_banks
表中该用户的行数不止一行,它也只获取一行。
例如:
User u = new User(name: 'user', password: 'pwd')
u.addToBanks(Bank.findById(1))
u.addToBanks(Bank.findById(2))
u.addToBanks(Bank.findById(3))
u.save(flush: true)
在数据库中可以,获取 3 行,但是当我获取用户并查看其银行列表时:
def user = User.findById(1) //OK
println "Size ${user.banks?.size()}" //only 1??? How?
提前致谢!