我正在使用JPA应用程序.JPA批注应用于Getter方法及其工作原理,但是当我尝试将批注应用于字段时,编译器会生成错误。
我想在字段上应用注释。
@Entity
@Table(name="TB_DEMO",query="select q from TB_DEMO q")
public class Demo extends DomainRoot{
@Column(name="VAR_COUNT")
private int varCount;
public int getCount(){
return this.varCount;
}
public void setCount(int count){
this.varCount=count;
}
}
错误:org.springframeowork.dao.InvalidDataResourceUsageException:
无法准备陈述
org.h2.jdbc.JdbcSQLException:找不到列“ QSXXXXXXXX_.VARCOUNT”
最佳答案
持久性提供程序不考虑您的字段属性,原因是DomainRoot或应用程序默认使用按属性进行映射(获取时使用批注),而您尝试使用按字段进行映射(对字段进行批注)。
规范说,在这种情况下(Inhritance),补偿是不可预测的。
对于您的示例,在类级别上增加@Access(AccessType.FIELD),或者在整个类层次结构中仅使用相同的访问级别,而无需声明@Access注释。