gpt4 book ai didi

jpa - 来自托管类型 [...] 的属性 [...] 不存在(对于具有小写/大写名称的字段

转载 作者:行者123 更新时间:2023-12-04 20:52:59 24 4
gpt4 key购买 nike

出现如下错误信息

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 规范大写规则是这里的罪魁祸首,如评论中所述 Where is the JavaBean property naming convention defined?

最佳答案

Criteria 查询片段:

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

必须使用 EMailStatus 而不是 eMailStatus 作为 beanField 内容 - 即使属性的名称是 eMailStatus 并且由于 java bean 约定只有 getter 具有大写字母“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);
}

关于jpa - 来自托管类型 [...] 的属性 [...] 不存在(对于具有小写/大写名称的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14852727/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com