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的字符串值。
答案 0 :(得分:0)
DataNucleus支持JPA 2.1 AttributeConverter,正如他们的文档告诉您的那样。它还允许您将状态注入其中(JPA 2.2)。 AKA符合所有JPA规范。所以我完全不知道这是什么&#34;忽略了JPA标准&#34; 的事情。
DataNucleus还提供对其自身(内部)增值机制的访问权限,您可以参考。