Hibernate两个属性映射同一字段

如果出现hibernate-should be mapped with insert="false" update="false错误
说明你有两个属性映射了数据库的同一字段值,有两个情况:
第一:在配置的时候拷贝别的属性的映射,忘记修改。
第二:真的需要两个属性映射同一字段值。
第一种情况,属于不细心造成的,修改正确的值就是了。
第二种情况,这样做的优点是,添加的时候不需要查询对象,直接设置Id就行了。
查询的时候,可以关联出对象。也就是添加和查询都很方便。
如何实现两个字段映射一个值:
    public class Role {  
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "USER_ID", nullable = false, updatable = false, insertable = false)
private User user;

@Column(name = "USER_ID", nullable = false, precision = 10, scale = 0)
private Long userId;
...getter,setter...
}

注意两点:
第一点不建议把注解写在属性上,最好是卸载getter方法上,这种好习惯是可以避免不细心引发的错误的。
比如第一种情况拷贝忘记修改一样,都是不好的习惯造成的。有经验的程序员都会有自己的习惯,因为他们
都遇到过这样的错误,就会通过自己的习惯来避免这些粗心造成的错误。新手最常见的错误就是一会程序能
运行,一会又不能运行,这个我认为就是好习惯没有养成,不知道怎么写能避免不必要的错误,这也可能为什么有
经验的程序员工资比较高吧。写在getter方法上可以避免遗忘生成getter方法。
第二点一定要配置updatable = false, insertable = false,如果不配置还是会出现hibernate-should be mapped with insert="false" update="false错误


/**如果有任何问题,可以加入群228920057进行讨论*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值