DataNucleus类型转换器:符合JPA2.1?

DataNucleus类型转换器:符合JPA2.1?,jpa,converter,datanucleus,Jpa,Converter,Datanucleus,DataNucleus(最新版本5.1.1)是否符合JPA 2.1 JPA2.1支持@Converter。但DataNucleus有自己的方式(作为扩展)忽略JPA标准: 更新 AttributeConverter的相同代码适用于EclipseLink,但在DataNucleus中失败 @Converter(autoApply=true) public class FooConverter implements AttributeConverter<Foo, String> {

DataNucleus(最新版本5.1.1)是否符合JPA 2.1

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

更新 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) {
           ...
      }

}

错误消息中的“hello.world”是Foo的字符串值。

DataNucleus支持JPA2.1,正如他们的文档告诉您的那样。它还允许您向它们注入状态(JPA2.2)。AKA符合周围所有JPA规范。所以我完全不知道这是什么“忽略JPA标准”的事情


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

更新的问题。同样的代码适用于eclipselink,但在DataNucleus中失败。谢谢。这是一个不同于你发布的问题。我使用标准JPA。类型转换器上的DataNucleus链接向我表明它不符合JPA。不幸的是,它不适用于标准转换器。如前所述,“TypeConverter”与他们对AttributeConverter的支持无关。“TypeConverter”在标准之前是否起到JPA AttributeConverter的作用?它看起来是一样的。用户现在有一些明显的查询(未公开查询是什么),并得到一些错误。。。谁知道这有什么问题。AttributeConverter用于持久化数据和检索数据。查看persist上的日志,您会发现它已被使用。我在新问题(堆栈跟踪)中没有看到任何涉及AttributeConverterI的内容。我怀疑转换器被忽略了。如果您怀疑有什么问题,那么您可以通过向JPA提供一个测试用例来演示这一点,并报告一个问题。仅仅在没有细节的情况下抛出怀疑(比如什么查询)对任何人都没有帮助
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)