次のエラーメッセージが表示されます
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 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);
}
私の仮定では、フィールドの名前は適切です。フィールドの最初の文字が小文字で、2番目の文字が大文字の場合、問題が示すように見えます。次のようなプロパティ名:
- SSN
- EMailStatus
大丈夫ですが、例えば
- eMailStatus
- xStatus
そうではありません。
ここで何が起こっている可能性があり、これをデバッグしてこれを修正する方法を見つけるにはどうすればよいですか?
「JavaBeanプロパティの命名規則はどこで定義されていますか?」のコメントで概説されているように、ここではJavaBean仕様の大文字化規則が原因であると推測してい ます。