当前位置: 首页 > 知识库问答 >
问题:

只使用@mappedby,不使用@joincolumn-在一个OneToMany关系中创建的joincolumn,那么joincolumn的用途是什么?

华佐
2023-03-14

我刚开始冬眠。我有一个与帐户和交易之间的双向映射的单人关系。我没有在这两个类中使用@JoinColumn,而在非所有者Account类中使用@MappedBy。一切正常。使用内存数据库中的H2,在事务表中创建新的联接列。那么@JoinColumn在OneToMany关系中有什么用--它仅仅用于单向映射吗?下面是代码。我还阅读了使用JPA@OneTomany关联时@JoinColumn和mappedBy之间的区别以供参考

  public class Account {
        @OneToMany( mappedBy="account", cascade=CascadeType.ALL)
        List<Transaction> list= new ArrayList<Transaction>();
    }

    public class Transaction {

        @ManyToOne
        Account account;
    }

应用程序类:

        Account a = new Account("savings");

        Transaction t1 = new Transaction("shoe purchase", 45);

        t1.setAccount(a);

        a.getList().add(t1);

        accountRepository.save(a);

输出:

Transaction表中有一个带外键的条目,它是account表中那一行中的account number。ACCOUNT_ID列在事务表中创建。

没有创建额外的表。

共有1个答案

翟淇
2023-03-14

Jpa基于约定配置的思想。因此,它将在任何时候代表您执行配置。想想@column注释,您不必在每个实体属性上应用它,只在必须更改属性时才需要它。

@JoinColumn相同,当您添加@ManyToOne时,Jpa已经知道您将需要join列,因此为您添加了join列,并且应用了外键的默认命名约定(AttributeName_PrimaryKeyoftheOtherType)。

 类似资料:
  • 我理解JoinColumn和mappedBy的两个JPA注释之间的一般区别,以及oneToMany关系应该使用mappedBy。我理解这是为了确保hibernate(或者我使用的任何JPA工具)识别双向关系,而不是碰巧共享列的两个单向关系。 然而,我想更好地理解为什么这很重要?我认为识别双向关系允许更优化地存储或获取数据,但谁能给我一个如何的例子?如果我有一个带有许多子对象的父对象,并且我用Joi

  • 问题内容: 之间有什么区别? 和 问题答案: 可以在关系的两边使用。 现在的问题是关于使用上侧(极少数情况下)。这里的重点是 物理信息重复 (列名)以及 未优化的SQL查询,这会产生一些其他语句。 根据文件: 由于 多对一的 (几乎)总是 所有者侧 的在JPA规范的双向关系中,一对多关联是通过注解 通过troop属性具有双向的一对多关系。您不必(不必)在侧面定义任何物理映射。 要 以一对多方为拥有

  • 两者之间有什么区别: 而且

  • 问题内容: 我已经阅读了很多有关@JoinColumn的内容,但是我仍然不明白它的含义。 患者表 车辆表 患者分类 车辆类别 Vehicle Class ---- Entity @JoinColumn(name=”patient_id”) ---- annotation private Patient patient ----field ``` 会说吗?该车辆实体有一个外键到患者实体命名patie

  • 我读了很多关于@JoinColumn的文章,但我仍然不明白它背后的想法。 病人床 车辆表 我一直在读这篇文章,但我仍然感到困惑。JPA JoinColumn与mappedBy