【问题标题】:Datanucleus enhancer error: transient methodDatanucleus 增强器错误:瞬态法
【发布时间】:2013-11-10 20:12:35
【问题描述】:

我有课

@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.

【问题讨论】:

  • 那不会编译,没关系增强
  • 其实已经编译好了。为什么说不会呢?
  • "无法从结果类型为 void 的方法返回值"
  • 好收获。错误的复制/粘贴在我这边:)。我换了帖子。谢谢。

标签: java maven jpa datanucleus


【解决方案1】:

免责声明:我不知道什么是 datanucleus。

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

布尔属性

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

public boolean is<PropertyName>();

可以提供此“isPropertyName”方法而不是 "get" 方法,或者除了提供 “获取”方法。在任何一种情况下,如果是 方法存在于布尔属性,那么我们将使用 "is" 方法读取属性值。一个例子 布尔属性可能是:

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

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

【讨论】:

    猜你喜欢
    • 2012-05-26
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 2012-06-21
    相关资源
    最近更新 更多