不是技术贴 只为吐槽......
Field[] fields = this.entityClass.getDeclaredFields();
for(Field f:fields){
if(f.isAnnotationPresent(Id.class)){
this.pkName = f.getName();
}
}
如上一段代码,通过反射判断字段是否标注 @Id 注解
实体类代码
@Entity
public class GeneratedOrderid extends AbstractBean {
private String id;
private Integer orderid = 0;
@Id
@Column(length = 5)
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@Column(nullable = false)
public Integer getOrderid() {
return orderid;
}
public void setOrderid(Integer orderid) {
this.orderid = orderid;
}
}
然后通过Spring 断言 Assert.notNull(pkName),抛出异常,pkName 为空。
经Debug,遍历fields时,f.isAnnotationPresent(Id.class) 返回值为false....很是不解,调试未果,抱着试试看的态度将注解 转移到属性上
代码如下
@Entity
public class GeneratedOrderid extends AbstractBean {
@Id
@Column(length = 5)
private String id;
@Column(nullable = false)
private Integer orderid = 0;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Integer getOrderid() {
return orderid;
}
public void setOrderid(Integer orderid) {
this.orderid = orderid;
}
}
然后测试,正常运行.......