Mr_Qiao93
2017-08-18 14:33
@老师,请教一个问题: @Column(length = 20) public String getName() { return name; } 修改默认的大小时,我第一次将@Id//主键是id @GeneratedValue //id自增 配置在属性上,没有执行,再改到方法上注解,就OK了。注解方法和注解属性有什么异同,底层的实现原理都是一样的嘛?
两者底层的实现原理是不一样的,注解写在属性上,是通过反射对属性值强行访问,因为属性往往是私有的,这样写就破坏了java的封装性原则,你在属性上写的private就失去了意义,而且注解直接写在属性上,一些数据内容较多的字段,或者外键约束等复杂字段上,会对你的表的构建有所影响。而写在方法上,底层是通过反射正常调用set或个get方法,这样一般不会出现意外情况的。所以我建议你把注解写在方法上!
OK,thx
底层的原理是一样的,在属性上没有执行可能是底层的没有对属性设置而对方法设置了该注解的效果;
轻松愉快之玩转SpringData
34087 学习 · 119 问题
相似问题