2

有没有人设法将 @Convert 注释与 DataNucleus 一起使用?您有工作示例或文档链接吗?

我试图以这种方式实现它

...
@Convert(converter = MyAttributeConverter.class)
private String[] aField;
...

MyAttributeConverter实现javax.persistence.jpa21.AttributeConverter<String[], String>

当我运行 DataNucleus Enhancer 时出现此错误

WARN [main] (Log4JLogger.java:96) - Class "XXX" has an annotation "javax.persistence.jpa21.Convert" specified with property "converter" yet this is invalid. Please check the specification for that annotation class. Errors were encountered when loading the specified MetaData files and classes. See the nested exceptions for details
ERROR [main] (Log4JLogger.java:125) - DataNucleus Enhancer completed with an error. Please review the enhancer log for full details. Some classes may have been enhanced but some caused errors Errors were encountered when loading the specified MetaData files and classes. See the nested exceptions for details org.datanucleus.exceptions.NucleusUserException: Errors were encountered when loading the specified MetaData files and classes. See the nested exceptions for details
    at org.datanucleus.metadata.MetaDataManager.loadClasses(MetaDataManager.java:536)
    ...

根据 DataNucleus 文档似乎很好:http : //www.datanucleus.org/products/accessplatform/jpa/annotations.html#Convert ,虽然谷歌搜索我发现了一个问题报告,其中事情有点不同:http://www .datanucleus.org/servlet/jira/browse/NUCJPA-164

我正在使用 DataNucleus 3.1.3。

4

2 回答 2

0

与此同时,我升级到了 datanucleus-accessplatform-jpa-rdbms 3.3.2(datanucleus-core 3.2.7,datanucleus-api-jpa 3.3.2)并让它工作了。

但该消息可能有多种原因:

  • 您可以在类路径中缺少转换器类。
  • 您的转换器可以从另一个类继承 - 请参阅我的另一个问题Base class for JPA converter(虽然尚未回答)
  • 转换器实体类型与使用 @Convert 注释的字段类型之间可能存在不兼容。
  • 版本之间可能存在不兼容。例如,您的转换器可以实现javax.persistence.jpa21.AttributeConverter(旧版本),但增强器正在使用javax.persistence.AttributeConverter(新版本)或相反。

我认为错误消息应该更具体一点,以帮助您更好地识别问题。

于 2013-09-14T07:01:49.333 回答