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 还提供对其自身(内部)增值机制的访问,您参考了这一点。
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 还提供对其自身(内部)增值机制的访问,您参考了这一点。