我有两个域类(简化),它们与多对多关系相关联。
一个团队可以有很多玩家,一个玩家可以属于很多团队。
当我打电话给'保存' 团队控制器的行动 :
Team.groovy 是:
class Team {
static hasMany = [players : Player]
String name;
String size;
}
Player.groovy 是:
class Player {
static hasMany = [teams : Team]
static belongsTo = Team
String fullName;
String age;
}
TeamController.groovy 是:
class TeamController {
def save() {
def player = new Player(fullName : "John Doe", age : "21").save()
def team = new Team(name : "LocalXI", size : "1").addToPlayers(player).save();
println "The players in the team are : " + team.players
println "The teams this player belongs to are : " + player.teams
}
}
上面的输出(当我拨打'保存'操作时):
The players in the team are : [John Doe]
The teams this player belongs to are : [LocalXI]
我是Grails和Groovy的新手,并花了很多时间试图解决这个问题。
答案 0 :(得分:0)
它应该工作。考虑到默认情况下save方法是事务性的,并且在方法完成之前它实际上不会持久保存数据。在事务中,一切看起来都正确,这就是println输出正确的原因。
如果您通过集成测试测试此控制器,则您的数据将不会持久存储,因为每次测试都会自动回滚事务。
如果您通过浏览器手动测试,请确保您当前的运行时环境中没有使用内存数据库。