出现以下错误信息
java.lang.IllegalArgumentException:
The attribute [eMailStatus]
from the managed type [EntityTypeImpl@902966747:PersonJpaDao
[ javaType: class com.bitplan.smartCRM.jpa.PersonJpaDao descriptor:
RelationalDescriptor(com.bitplan.smartCRM.jpa.PersonJpaDao --> [DatabaseTable(Person)]),
mappings: 46]]
is not present.
at
org.eclipse.persistence.internal.jpa.metamodel.ManagedTypeImpl.getAttribute(ManagedTypeImpl.java:147)
当注释和getter 和setter 存在时:
/**
* getter for xsd:string/String EMailStatus
* @return eMailStatus
*/
@Column(name="eMailStatus")
public String getEMailStatus() {
return getPersonImpl().getEMailStatus();
}
/**
* setter for xsd:string/String EMailStatus
* @param peMailStatus - new value for EMailStatus
*/
public void setEMailStatus(String peMailStatus) {
getPersonImpl().setEMailStatus(peMailStatus);
}
我的假设是该字段的命名是相关的:如果该字段的第一个字母是小写字母,第二个字母是大写字母,则问题似乎显示。属性名称如:
- 社会保障号
- 电子邮件状态
还可以,但是例如
- 电子邮件状态
- x状态
不是。
这里可能发生了什么,我该如何调试它以找出如何解决这个问题?
我猜 JavaBean 规范的大写规则是罪魁祸首,正如 JavaBean 属性命名约定在哪里定义的评论中所概述的那样?