没有joinTable的单向OneToMany关系

亚瑟·罗纳德(Arthur Ronald)

为了在映射单向OneToMany关系时获得外键列(无joinTable),我按照Grails(版本2.2.3)参考文档第6.5.2.1节“ OneToMany映射”中的步骤进行操作。

对于单向关联,需要在关联本身上指定外键。例如,给定“人”(由“ 1”代替)和“地址”(由“ Many”代替)之间的单向OneToMany关系,以下代码将更改“多”表中的外键

class One {

    static hasMany = [manyCollection:Many]
    static mapping = {
        manyCollection(column:"ONE_ID")
    }

}

但是,当我跑步时

One one = new One()
one.addToManyCollection(new Many())

one.save()

我进入控制台

insert 
into
    one
    (id, version) 
values
    (null, ?)

insert 
into
    many
    (id, version) 
values
    (null, ?)

insert 
into
    one_many
    (one_many_collection_id, many_id) 
values
    (?, ?)

注意Grails创建了一个称为one_many的joinTable。所以,我的问题是:是bug还是其他?我应该怎么做才能摆脱joinTable?

即使我使用类似的东西

class One {

    static hasMany = [manyCollection:Many]
    static mapping = {
        manyCollection(joinTable:false)
    }

}

为凸显在这里,我得到的结果相同

伊库门

您快要准备好了,您需要进行两半的映射,但是您需要两者都可以使其正常工作。它不是一个文档完善的功能,但是我以前使用过它,并且确实可以使用(例如,没有连接表)。所以在你的一堂课上

class One {
  ..
  static mapping = {
    manyCollection column: "ONE_ID", joinTable: false
  }
}

注意:进行映射更改时,退出,清理并重新启动grails可能是一个好主意。解决方案是,简单的擦洗干净后,我就失去了很多时间来敲打我的头。

同样,从技术上讲,您可以在Many类中添加belongsTo 后向引用,而仍然需要真正的单向功能,但是如果需要的话,还可以通过级联操作(映射到One类中)获得额外的好处。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

带有@JoinTable 的单向@OneToMany 不更新连接表

创建没有外键的单向关系

有没有一种方法可以删除@OneToMany关系中的子实体(使用JoinTable),而不必获取完整的集合?

没有JOIN表的Symfony一对多单向关系

单向@OnetoMany映射将删除所有关系并重新添加剩余的关系,而不是删除特定的关系

@OneToMany没有逆关系并且没有联接表?

JPA没有将外键保存到@OneToMany关系

删除元素时使用JoinTable和OrderColumn在Hibernate单向OneToMany映射中违反约束

为什么要在 Java 中使用 @JoinTable 批注而不是单向 @OneToMany 批注

如何在JPA中定义单向OneToMany关系

Hibernate-HQL从单向OneToMany关系中获取集合

无法使用单向@OneToMany关系JPA提取记录

没有MongoId的Doctrine MongoDB ODM中的单向多对一关系

我们是否应该将单向的一对多关系分解为JoinTable

没有joincolumn / jointable的Hibbernate映射图

具有@OneToMany关系的Java Spring Data @Query没有返回结果

单向OneToMany映射问题

JPA单向@OneToMany性能

JPQL用于单向OneToMany

在具有左联接多对多单向关系的用户中,在Doctrine DQL中选择count(),其中用户没有关系特定的组

没有将OneToMany关系孤儿从数据库中删除

JPA与同一实体的两个单向@OneToMany关系导致重复输入

具有属性和单向映射的多对多关系

JPA / Hibernate @OneToMany 在 JoinTable 上带有可选的 Child - 保存父级影响 JoinTable 上的多个插入

具有OneToMany关系的休眠重复项

Hibernate具有OneToMany关系的奇怪行为

单向关系:移除级联

如何建立单向关系?

JPA ManyToMany单向关系