代码之家  ›  专栏  ›  技术社区  ›  Roman

如何使用JPA(Hibernate)创建与同一实体的关系?

  •  0
  • Roman  · 技术社区  · 14 年前

    我有一个实体 User manager 其中manager是另一个用户(一个manager可以管理多个用户,任何用户可能只有一个manager或者没有任何manager)。

    我该如何实现这一点?

    我试过一些标准的东西

    @ManyToOne
    @JoinColumn (name = ??? /* what should be here? */, nullable = true)
    private User manager;
    

    但事情并不像看上去那么简单。。

    3 回复  |  直到 14 年前
        1
  •  2
  •   BalusC    12 年前

    有什么问题吗?使用默认值,即不设置 name 如果您不知道如何命名联接列(应该默认为MANAGER\ ID之类的名称)。从javadoc的 name 属性:

    (可选) 外键的名称 柱 . 它所在的表 如果加入 是一个一个或多个一个 源实体的表 . 如果 加入是为了很多人,外国人 used):连接 关系属性或字段 引用实体;“\”;的名字 引用的主键列。如果 没有这样的参照 关系中的属性或字段 实体,则形成联接列名 作为以下内容的串联: 实体的名称;“\”;名字

        2
  •  4
  •   Jose Diaz    14 年前

    这应该起作用:

    @OneToOne
    @JoinColumn(name="manager")
    private User manager;
    
        3
  •  0
  •   SomeFatMan    14 年前

    你应该把你想加入的列的名字放到你的 User "manager_id" 或者别的什么。