我創建了一個轉換器插件等中記載here的類型X.DataNucleus將type_converter插件
然後,我創建的類
class A {
@Basic(fetch = FetchType.Eager)
X x;
}
當我試圖堅持的一個對象,我得到以下錯誤
org.datanucleus.exceptions.NucleusDataStoreException: Object of type net.sf.jcommon.geo.Country isnt Serializable
org.datanucleus.store.rdbms.mapping.AbstractLargeBinaryRDBMSMapping.setObject(AbstractLargeBinaryRDBMSMapping.java:235)
org.datanucleus.store.mapped.mapping.SingleFieldMapping.setObject(SingleFieldMapping.java:207)
org.datanucleus.store.rdbms.fieldmanager.ParameterSetter.storeObjectField(ParameterSetter.java:201)
org.datanucleus.state.AbstractStateManager.providedObjectField(AbstractStateManager.java:1447)
該插件似乎被加載,據我所知,從日誌記錄。
Added converter for X<->java.lang.String using mypackage.myplugin.XStringConverter
使用調試器,我在轉換器中設置了斷點,但流程並沒有去那裏。
還有什麼可能出錯?
我正在使用DataNucleus 3.1.3。
插件代碼如下。
MANIFEST.MF
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: myplugin
Bundle-SymbolicName: mypackage.myplugin
Bundle-Version: 1.0.1
Bundle-Vendor: Adrian Ber
的plugin.xml
<?xml version="1.0"?>
<plugin id="mypackage.myplugin" name="DataNucleus plug-ins" provider-name="myplugin">
<extension point="org.datanucleus.type_converter">
<type-converter name="dn.x-string" member-type="mypackage.myplugin"
datastore-type="java.lang.String"
converter-class="mypackage.myplugin.XStringConverter" />
</extension>
</plugin>
XStringConverter
package mypackage.myplugin;
import org.datanucleus.store.types.converters.TypeConverter;
public class XStringConverter implements TypeConverter<X, String> {
private static final long serialVersionUID = 1L;
@Override
public String toDatastoreType(Country memberValue) {
return memberValue == null ? null : memberValue.getISO();
}
@Override
public Country toMemberType(String datastoreValue) {
return datastoreValue == null ? null : X.findByISO(datastoreValue.trim());
}
}
您的類X是否實現了Serializable? – 2013-03-26 07:19:37
不,它沒有。但是,如果我有一個轉換爲String類的轉換器,我認爲它不應該。 – 2013-03-26 07:21:50
如果你創建了一個插件,那麼爲什麼不發佈它...轉換器,plugin.xml,MANIFEST.MF等等。並且說明你是否爲它提供了關聯的XXXMapping類(對於RDBMS數據存儲區,3.1必需,3.2是可選的) – DataNucleus 2013-03-26 07:27:24