hibernate问题:数据库中的一个外键字段可以在实体中用多个属性去映射么?

@Column(name="user_id")privateIntegeruserId;@ManyToOne(targetEntity=User.class,fetch=... @Column(name = "user_id")
private Integer userId;

@ManyToOne(targetEntity=User.class,fetch = FetchType.LAZY)
@JoinColumn(name="user_id" ,nullable = true,insertable = false,updatable = false)
private User user;
--------------
这样映射对吗?user_id为外键
展开
 我来答
stefwujj
2013-08-29 · TA获得超过417个赞
知道小有建树答主
回答量:141
采纳率:100%
帮助的人:207万
展开全部
你好,这样是可以的,和你写的代码一样,如果有两个属性同时映射到一个列,那么其中一个属性就必须设置为insert=false,update=false,我觉得你代码这样设计,最好是把userId设置为insert=false,update=false,而让hibernate去管理user的关系。还有,这个根本没有违反什么约束,只是说这种设计方法不算太好。
雨润小青
2013-08-25
知道答主
回答量:11
采纳率:0%
帮助的人:6.2万
展开全部
不对。这个外键只能由实体中的一个属性或字段去映射,多个属性或字段去映射就重复了,违反了约束。
追问
但是我上次看到一个人的代码就是这样写的啊,他保存的时候就用@Column(name = "user_id")
private Integer userId;这个属性,查询的时候就用private User user; 我觉得他这个很方便啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式