grails - 保存实例时使用Grails映射解决异常

标签 grails mapping hibernate-mapping

我有以下域类:

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将具有一个localvisiting Team

关于grails - 保存实例时使用Grails映射解决异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13831499/

相关文章:

grails - 在Grails上的src/java文件中动态更改枚举值

jquery-ui - grails + jquery ui插件,使用自定义主题

java - 通用方法和 JSON

Symfony 2 Doctrine 在更新关系映射后不起作用

postgresql - 有没有办法使用 hibernate TypeDef 从 jpa 实体生成 liquibase 变更日志?

java - Hibernate - 集合的一对多映射 - 注解

java - 在 Spring Security 登录期间设置 Grails/Spring Locale - 如何?

data-binding - 数据绑定(bind)到 Grails 中命令上的枚举

管脚映射代码

Hibernate 映射资源位于单独的 jar 中