Jpa 托管类型[…]中的属性[…]不存在(对于具有小写/大写名称的字段)
出现以下错误消息Jpa 托管类型[…]中的属性[…]不存在(对于具有小写/大写名称的字段),jpa,Jpa,出现以下错误消息 java.lang.IllegalArgumentException: The attribute [eMailStatus] from the managed type [EntityTypeImpl@902966747:PersonJpaDao [ javaType: class com.bitplan.smartCRM.jpa.PersonJpaDao descriptor: RelationalDescriptor(com.bitplan.smart
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);
}
我的假设是,字段的命名是相关的:
如果字段的第一个字母是小写,第二个字母是大写,则问题似乎会出现。PropertyName类似于:
- SSN
- 电子邮件状态
- 电子邮件状态
- 克斯塔特斯
条件查询片段:
Path<String> beanValue = qh.from.<String> get(beanField);
我有一些像cq.where(cb.like(cb.lower(root.get(propertyName)),value));它忽略了将其转换为小写的大小写,但仍然只有在按照CALS中声明的字段保持精确的大小写敏感度时才起作用。
/**
* 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);
}