here are the 2 classes involved in the annotation
package com.cambridgesemantics.anzo.relationalreplicator.openjpaplugin;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import org.apache.openjpa.jdbc.kernel.JDBCStore;
import org.apache.openjpa.jdbc.meta.ValueMapping;
import org.apache.openjpa.jdbc.meta.strats.AbstractValueHandler;
public abstract class XGCAbstractValueHandler extends AbstractValueHandler {
@Override
public Object toObjectValue(ValueMapping vm, Object val) {
if (val == null)
return null;
try {
return
DatatypeFactory.newInstance().newXMLGregorianCalendar(val.toString());
} catch (DatatypeConfigurationException e) {
e.printStackTrace();
return null;
}
}
@Override
public Object toDataStoreValue(ValueMapping vm, Object val, JDBCStore
store) {
if (val == null || !(val instanceof
javax.xml.datatype.XMLGregorianCalendar))
return null;
javax.xml.datatype.XMLGregorianCalendar date =
(javax.xml.datatype.XMLGregorianCalendar) val;
return date.toGregorianCalendar().getTime();
}
}
package com.cambridgesemantics.anzo.relationalreplicator.openjpaplugin;
import org.apache.openjpa.jdbc.identifier.DBIdentifier;
import org.apache.openjpa.jdbc.meta.ValueMapping;
import org.apache.openjpa.jdbc.schema.Column;
import org.apache.openjpa.jdbc.schema.ColumnIO;
import org.apache.openjpa.jdbc.sql.DBDictionary;
import org.apache.openjpa.meta.JavaTypes;
public class XGCTimestampValueHandler extends XGCAbstractValueHandler {
private static final XGCTimestampValueHandler _instance = new
XGCTimestampValueHandler();
/**
* Singleton instance.
*/
public static XGCTimestampValueHandler getInstance() {
return _instance;
}
@Deprecated
@Override
public Column[] map(ValueMapping vm, String name, ColumnIO io, boolean
adapt) {
DBDictionary dict = vm.getMappingRepository().getDBDictionary();
DBIdentifier colName = DBIdentifier.newColumn(name, dict != null ?
dict.delimitAll() : false);
return map(vm, colName, io, adapt);
}
public Column[] map(ValueMapping vm, DBIdentifier name, ColumnIO io,
boolean adapt) {
Column col = new Column();
col.setIdentifier(name);
col.setJavaType(JavaTypes.DATE);
col.setType(java.sql.Types.TIMESTAMP);
return new Column[] { col };
}
}
--
View this message in context:
http://openjpa.208410.n2.nabble.com/Failing-to-persist-a-field-where-the-type-is-XMLGregorianCalendar-tp7580665p7580674.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.