![](/img/trans.png)
[英]Hibernate: PropertyNotFoundException: Could not find a getter for XXX
[英]Hibernate - PropertyNotFoundException: Could not find a getter for
我有一个如下所示的类:
public class MyClass {
private String dPart1;
public String getDPart1() {
return dPart1;
}
public void setDPart1(String dPart1) {
this.dPart1 = dPart1;
}
}
我的休眠映射文件映射属性如下:
<property name="dPart1" not-null="true"/>
我收到以下错误:
org.hibernate.PropertyNotFoundException: Could not find a getter for dPart1 in class com.mypackage.MyClass
at org.hibernate.property.BasicPropertyAccessor.createGetter(BasicPropertyAccessor.java:282)
at org.hibernate.property.BasicPropertyAccessor.getGetter(BasicPropertyAccessor.java:275)
at org.hibernate.mapping.Property.getGetter(Property.java:272)
at org.hibernate.tuple.entity.PojoEntityTuplizer.buildPropertyGetter(PojoEntityTuplizer.java:247)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:125)
at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:55)
at org.hibernate.tuple.entity.EntityEntityModeToTuplizerMapping.<init>(EntityEntityModeToTuplizerMapping.java:56)
at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:302)
at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:434)
at
看来 hibernate 不喜欢我的大写。 我应该如何解决这个问题?
<property name="DPart1" not-null="true"/>
应该管用...
对于名为“dPart1”的属性,休眠将尝试名为“getDpart1”而不是“getDPart1”IIRC的getter
你不能像访问字段一样访问它吗?
访问=“字段”
setter 和 getter 应该是这样的
getdPart1()
setdPart1(....)
如果通过 Eclipse 之类的 IDE 生成,那么 setter 和 getter 就是这样生成的。
对于私有的 Integer carId 属性;
setter 和 getter 应该是
getCarId() setCarId(Integer carId)
private String rptausu;
public String getRptausu() {
return rptausu;
}
public void setRptausu(String rpta) {
rptausu = rpta;
}
映射:
<property name="prtausu" />
工作正常
在我最初使用的我自己的案例中,属性的命名约定很重要
private String newimsi, getNewImsi();
以上失败,但有同样的例外
属性未找到异常
直到我在它起作用之前更正到下面
getNewimsi();
最佳实践不是我们自己创建 getter/setter,而是使用 Eclipse Shortcut(Alt+Shift+S) 为 bean/pojo 中定义的变量创建相同的变量。
命名约定很重要。
从我所见,Hibernate(至少版本 3.2.4)会期望像 dPart 这样的属性有一个名为 getdPart 的 getter:d 保持小写。 也看看 dfa 的答案 - 我猜其他版本可能会期望 getDpart 代替。
我得到了解决方案
请将 dPart1 设为 dpart1 并再次更改 getter 和 setter。
它现在对我有用。
记住也要更改xml。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.