DataNucleus类型转换器:JPA 2.1兼容?

时间:2017-08-17 15:22:21

标签: jpa converter datanucleus

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的字符串值。

1 个答案:

答案 0 :(得分:0)

DataNucleus支持JPA 2.1 AttributeConverter,正如他们的文档告诉您的那样。它还允许您将状态注入其中(JPA 2.2)。 AKA符合所有JPA规范。所以我完全不知道这是什么&#34;忽略了JPA标准&#34; 的事情。

DataNucleus还提供对其自身(内部)增值机制的访问权限,您可以参考。