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进行讨论*/

猜你喜欢

转载自yq81862.iteye.com/blog/1867936