Hibernate - PropertyNotFoundException:找不到getter

时间:2009-05-28 14:50:04

标签: java hibernate

我有一个如下所示的课程:

public class MyClass {
    private String dPart1;

    public String getDPart1() {
        return dPart1;
    }

    public void setDPart1(String dPart1) {
        this.dPart1 = dPart1;
    }
}

我的hibernate映射文件按如下方式映射属性:

<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不喜欢我的大小写。我该如何解决这个问题?

10 个答案:

答案 0 :(得分:18)

<property name="DPart1" not-null="true"/>

应该有用......

答案 1 :(得分:6)

对于名为“dPart1”的属性,hibernate会尝试一个名为“getDpart1”而不是“getDPart1”的getter IIRC

答案 2 :(得分:3)

难道你不能像场一样访问它吗?

访问= “字段”

答案 3 :(得分:0)

我得到了解决方案

请将dPart1改为dpart1并再次更改getter和setter ..

现在正在为我工​​作。

请记住也要更改xml。

答案 4 :(得分:0)

private String rptausu;

public String getRptausu() {
    return rptausu;
}

public void setRptausu(String rpta) {
    rptausu = rpta;
}

映射:

        <property name="prtausu" />

正常工作

答案 5 :(得分:0)

从我所看到的,Hibernate(至少版本3.2.4)将期望像dPart这样的属性有一个名为getdPart的getter:d保持小写。看看dfa的答案 - 我猜其他版本可能会期待getDpart。

答案 6 :(得分:0)

二传手&amp; getter应该看起来像这样

getdPart1()
setdPart1(....)

这就是定位者和如果通过像eclipse这样的IDE生成,则生成getter。

答案 7 :(得分:0)

对于一个财产 私人整数carId;

setter和getter应该是

getCarId() setCarId(Integer carId)

答案 8 :(得分:0)

属性的命名约定在我自己的情况下最初使用

private String newimsi, getNewImsi();

以上失败并出现同样的异常

  

propertynotfoundexception

直到我在工作之前纠正到以下

getNewimsi();

答案 9 :(得分:0)

最佳实践不是我们自己创建getter / setter,而是使用Eclipse快捷键(Alt + Shift + S)为bean / pojo中定义的变量创建getter / setter。

命名约定很重要。