【问题标题】:How can I map double relationships JPA?如何映射双重关系 JPA?
【发布时间】:2013-11-27 14:45:42
【问题描述】:

我在 JPA 需要这样的地图:

我如何映射两个“表”之间的两种关系,其中一个是主键,一对一(预先为 newClient),另一方面,一对多不是 PK?

我尝试了类似的方法,但失败了。

public class Recommendation implements Serializable {
    @Id @OneToOne
    @Column(name="...")
    private Client newClient;
    @ManyToOne
    @Column(name="...")
    private Client oldFella;
    @Column(name="...")
    private Boolean wasUsedToGenerateBond;

...

}

谢谢!

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    两个实体之间可以有多个多对多关系。每个关系都有自己的连接表。连接表的默认名称可能相同,因此您需要指定@JoinTable 的名称。

    这里有可能的答案

    JPA Problems mapping relationships

    更多信息

    Hibernate 4.2, bidirectional @OneToOne and @Id

    【讨论】:

      【解决方案2】:

      像这样:

      @Id @OneToOne
      @JoinColumn(name="id_client1")
      private Client newClient;
      @ManyToOne
      @JoinColumn(name="id_client2")
      private Client oldFella;
      

      【讨论】:

      • 它不起作用。我进入了 Class Client 类似的内容:@OneToMany(fetch = FetchType.EAGER,mappedBy = "newClient") private Set<Recommendation> recommendations = new HashSet<Recommendation>(); @ManyToOne private Client theGuyWhoRecommendsMeThis;
      • 无法配置 EntityManagerFactory。 mappedBy reference an unknown target entity property: uo.ri.model.Recommendation.newClient in uo.ri.model.Cliente.recommendations
      • 只是检查:您的字段是否有 getter 和 setter?你应该。此外,您可以尝试将注释应用于公共成员(在您的情况下为 getter)。
      • 我得到了 getter 和 setter(Id attrb 除外,因为我在它们上生成哈希码和 equals)。
      • 然后尝试将注释移动到 getter。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-21
      • 1970-01-01
      • 2011-02-14
      • 1970-01-01
      相关资源
      最近更新 更多