我有以下域类:
class Team{
static hasMany = [localMatches: Match, visitingMatches: Match]
static mappedBy = [localMatches: 'localTeam', visitingMatches: 'visitingTeam']
List<Match> localMatches = new ArrayList<Match>()
List<Match> visitingMatches = new ArrayList<Match>()
}
class Match{
Team localTeam
Team visitingTeam
}
当我运行以下命令时:
Match match = new Match(localTeam: aLocalTeam, visitingTeam: aVisitingTeam)
match.save(flush: true, failOnError: true)
我收到异常“由:org.h2.jdbc.JdbcSQLException引起:列“LOCAL_TEAM_ID”中不允许使用NULL; SQL语句:”
因此,在保存比赛之前,我需要在每个团队中设置比赛以避免异常:
Match match = new Match(localTeam: aLocalTeam, visitingTeam: aVisitingTeam)
aLocalTeam.localMatches.add(match)
aVisitingTeam.localMatches.add(match)
match.save(flush: true, failOnError: true)
有没有什么办法可以映射类,所以我不需要在保存之前将比赛添加到每个团队中?
最佳答案
hasMany
块定义Match
具有许多localMatches
,但随后在下面将localMatches
重新定义为与单个Match
的关系。我相信您真正的意思是:
class Team {
static hasMany = [localMatches: Match, visitingMatches: Match]
static mappedBy = [localMatches: 'localTeam', visitingMatches: 'visitingTeam']
}
class Match {
Team localTeam
Team visitingTeam
}
通过这种方式映射,
Team
将具有两个Matches
集合,每个Match
将具有一个local
和visiting Team
。
关于grails - 保存实例时使用Grails映射解决异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13831499/