【问题标题】:How create entity. Hibernate如何创建实体。休眠
【发布时间】:2017-12-13 02:35:43
【问题描述】:

每家公司都有两个属性,它们是公司名称和预计年收入。 有两种类型的公司:1- 主要公司,2- 子公司。 公司可以只属于一个公司,但可以有几个子公司。

【问题讨论】:

    标签: java hibernate jpa one-to-many one-to-one


    【解决方案1】:

    只是为了让您朝着正确的方向前进,您需要查看关联映射,Hibernate 提供了用于定义关联的字段/方法注释 - 在您的情况下需要特别注意;

    @Entity
    @OneToMany
    @ManyToOne
    

    我建议您花一些时间熟悉有关该主题的Hibernate Documentation;这是使用休眠的基础。谷歌上有关该主题的一些入门教程可以帮助您入门 - 那里有很多(here for example)。如果您在开始时遇到特定问题,我相信您可以获得更多帮助。

    【讨论】:

      【解决方案2】:

      使用@Entity,您可以将一个类定义为一个实体。使用@Column,您可以定义哪些属性映射到哪些表列。之后你需要定义你的关系,在这种情况下是对同一个表的自我引用(母公司到子公司),你可以这样定义它:

      @ManyToOne
      private Company parentCompany;
      @OneToMany(mappedBy = "parentCompany", fetch = FetchType.EAGER)
      private Set<Company> childCompanies;
      

      【讨论】:

      • 有很多,所以应该命名为childCompanies。命名至关重要。为什么要使用 FetchType EAGER 而不是使用正常的默认值,尤其是对于像这样的递归关联。加载任何 cmpany 将强制加载整个公司树。
      • 感谢我编辑了名称,但对于获取类型,我通常使用渴望获得更好的性能:) 在我的回答中,它暗示您可以控制如何获取关系。
      • 使用 EAGER 进行 toMany 关联是破坏性能的最佳方式
      • 我猜不是。如果你想对 childCompanies 做一些重复的操作怎么办 :)
      猜你喜欢
      • 1970-01-01
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-31
      • 1970-01-01
      • 2012-09-09
      • 1970-01-01
      相关资源
      最近更新 更多