0

我有一堂课

@Entity
public class MyClass extends BaseClass {
    ... 
    public boolean isOpenAt(Date x) {
        return true; // or whatever
    }
}

@MappedSuperclass
@Access(AccessType.Field)
public abstract class BaseClass {
    ...
}

运行mvn datanucleus:enhance我得到错误org.datanucleus.metadata.InvalidClassMetaDataException: "MyClass.openAt" : declared in MetaData, but this field doesnt exist in the class!知道为什么吗?

我正在使用 org.datanucleus:datanucleus-core:3.2.7, org.datanucleus:datanucleus-accessplatform-jpa-rdbms:3.3.2, org.eclipse.persistence:javax.persistence:2.1.0, org.datanucleus: datanucleus-maven-plugin:3.3.0-release。

4

1 回答 1

1

免责声明:我不知道数据核是什么。

也就是说,该isOpenAt()方法很可能被视为 getter(类似于getFirstName(),比如说),因为根据 JavaBeans 规范,

布尔属性

此外,对于布尔属性,我们允许使用 getter 方法来匹配模式:

public boolean is<PropertyName>();

可以提供该“isPropertyName”方法来代替“get”方法,或者可以在“get”方法之外提供它。在任何一种情况下,如果布尔属性存在 is 方法,那么我们将使用“is”方法来读取属性值。一个示例布尔属性可能是:

public boolean isMarsupial(); public void setMarsupial(boolean m);

尝试重命名isOpenAt()seeIfOpenAt(),看看是否有帮助。

于 2013-10-31T00:23:05.000 回答