DataNucleus 类型转换器:是否符合 JPA 2.1?

DataNucleus type converter: JPA 2.1 compliant?

DataNucleus(最新的 5.1.1)是否兼容 JPA 2.1?

JPA 2.1 支持@Converter。但是 DataNucleus 有自己的方式(作为扩展)忽略 JPA 标准:

http://www.datanucleus.org/documentation/extensions/type_converter.html

更新

与 AttributeConverter 相同的代码适用于 EclipseLink,但在 DataNucleus 上失败。

@Converter(autoApply=true)
public class FooConverter implements AttributeConverter<Foo, String> {

    @Override
    public String convertToDatabaseColumn(Foo attribute) {
                ....
    }

    @Override
    public Foo convertToEntityAttribute(String value) {
        ...
    }

}


@Entity
public class Bar {

      @Convert(converter=FooConverter.class) 
      public Foo getFoo() {
           ...
      }

      public void setFoo(Foo foo) {
           ...
      }

}

错误:

org.datanucleus.exceptions.NucleusUserException: Identifier hello.world is unresolved (not a static field)
        at org.datanucleus.query.expression.PrimaryExpression.bind(PrimaryExpression.java:215)
        at org.datanucleus.query.expression.DyadicExpression.bind(DyadicExpression.java:131)
        at org.datanucleus.query.expression.DyadicExpression.bind(DyadicExpression.java:131)
        at org.datanucleus.query.expression.DyadicExpression.bind(DyadicExpression.java:89)
        at org.datanucleus.query.compiler.JavaQueryCompiler.compileFilter(JavaQueryCompiler.java:617)
        at org.datanucleus.query.compiler.JPQLCompiler.compile(JPQLCompiler.java:86)
        at org.datanucleus.store.query.AbstractJPQLQuery.compileGeneric(AbstractJPQLQuery.java:304)
        at org.datanucleus.store.query.AbstractJPQLQuery.compileInternal(AbstractJPQLQuery.java:365)

报错信息中的'hello.world'为Foo的字符串值

DataNucleus 支持 JPA 2.1 AttributeConverter,正如他们的文档告诉您的那样。它还允许您将状态注入它们 (JPA 2.2)。 AKA 符合所有 JPA 规范。所以我完全不知道这是什么 "ignoring JPA standard" 东西。

DataNucleus 还提供对其自身(内部)增值机制的访问,您参考了这一点。