我有一个实体管理器,它应该有属性管理器,其中User是另一个用户(一个管理器可以管理多个用户,任何用户可以只有一个管理器,也可以没有)。
我如何实现这一点?
我试过一些标准的东西
@ManyToOne
@JoinColumn (name = ??? /* what should be here? */, nullable = true)
private User manager;但事情并不像看起来那么简单..
发布于 2010-07-21 22:29:18
有什么问题吗?使用缺省值,即如果您不知道如何命名联接列,则不要设置name (应该缺省为类似MANAGER_ID的名称)。在name属性的javadoc中:
(可选)外键列的名称。它所在的表取决于上下文。如果联接用于OneToOne或多ToOne映射,则外键列位于源实体的表中。如果联接是针对ManyToMany的,则外键位于联接表中。默认值(仅适用于使用单个联接列):以下各项的串联:引用实体的引用关系属性或字段的名称;"_";被引用的主键列的名称。如果实体中没有这样的引用关系属性或字段,则join列名由以下内容拼接而成:实体名称;"_";被引用主键列的名称。
发布于 2010-07-21 22:28:31
这应该是可行的:
@OneToOne
@JoinColumn(name="manager")
private User manager;发布于 2010-07-21 22:30:23
您应该将要联接的列的名称放到User实体中。名称可以是你想要的任何东西,它将出现在你的数据库中。"manager_id"之类的。
https://stackoverflow.com/questions/3300263
复制相似问题