属性[...]从被管理型[...]不存在(用于与小写/大写名称

问题描述:

字段的出现以下错误消息属性[...]从被管理型[...]不存在(用于与小写/大写名称

java.lang.IllegalArgumentException: 
The attribute [eMailStatus] 
from the managed type [[email protected]: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); 
    } 

我的假设是,该领域的命名是相关的: 如果该字段的第一个字母小写,而不是问题似乎表明,二是大写Propertynames这样的:

  • SSN
  • EMailStatus

是o.k但例如

  • eMailStatus
  • xStatus

都没有。

这里可能会发生什么,我怎么能调试这个找出如何解决这个问题?

我猜测JavaBean的规范资本规则是罪魁祸首这里在 Where is the JavaBean property naming convention defined?

条件查询片断评论概述:

Path<String> beanValue = qh.from.<String> get(beanField); 

必须与EMailStatus做不eMailStatus为beanField的内容 - 即使属性的名称是eMailStatus,并且由于java bean约定,只有getter有一个upperCase“E”。我还没有找到为什么 - 所以其他答案仍然赞赏。

Introspector decapitalize function在这里可能会有所帮助。

它也可以重命名列 “EMailStatus”:

/** 
    * 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); 
    } 
+0

我有这样的事情cq.where(cb.like(cb.lower(根 GET(propertyName的)),值)) ;忽略大小写将其转换为小写的情况,但只有在确切的大小写敏感性按照在calss中声明的字段进行维护时才有效。 – 2015-10-01 14:42:27