我有一个班级
@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将-行家-插件:3.3.0释放
答案 0 :(得分:1)
免责声明:我不知道datanucleus是什么。
也就是说,isOpenAt()
方法很可能被视为一个getter(类似于getFirstName()
),因为根据JavaBeans规范,
布尔属性
另外,对于布尔属性,我们允许a getter方法匹配模式:
public boolean is<PropertyName>();
可以提供此“isPropertyName”方法而不是a “get”方法,或者除了a之外还可以提供 “得到”方法。在任何一种情况下,如果是 方法存在于布尔属性然后我们将使用 “是”方法来读取属性值。一个例子 布尔属性可能是:
public boolean isMarsupial(); public void setMarsupial(boolean m);
尝试将isOpenAt()
重命名为seeIfOpenAt()
,看看是否有帮助。