0
Я хочу, чтобы объект Object to MongoDB с Morphia.Morphia не может вставить класс в DB
Но я получил кучу исключений:
Exception in thread "main" java.lang.IllegalArgumentException: can't serialize class com.aerlingus.ta.models.b2b.faresearch.AirSearchPrefsType$CabinPref
at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:270)
Вот это сохранить():
public void create(MODEL model) {
Object keyValue = get(model);
if(datastore.find(this.model).field(keyField.id()).equal(keyValue).get() == null){
datastore.save(model);
} else {
throw new RuntimeException(String.format("Duplicate parameters '%s' : '%s'", keyField.id(), keyValue));
}
}
Вот AirSearchPrefsType класс:
@Embedded
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
public static class CabinPref {
@Embedded @Compare
@XmlAttribute(name = "PreferLevel")
protected PreferLevelType preferLevel;
@Embedded @Compare
@XmlAttribute(name = "Cabin")
protected CabinType cabin;
@Transient
@XmlAttribute(name = "CabinSubtype")
protected String cabinSubtype;
и PreferLevelType:
@Embedded
@XmlType(name = "PreferLevelType")
@XmlEnum
public enum PreferLevelType {
@Embedded
@XmlEnumValue("Only")
ONLY("Only"),
@XmlEnumValue("Unacceptable")
@Embedded
UNACCEPTABLE("Unacceptable"),
@XmlEnumValue("Preferred")
@Embedded
PREFERRED("Preferred"),
@Embedded
@XmlEnumValue("Required")
REQUIRED("Required"),
@Embedded
@XmlEnumValue("NoPreference")
NO_PREFERENCE("NoPreference");
private final String value;
и CabinType:
@Embedded
@XmlType(name = "CabinType")
@XmlEnum
public enum CabinType {
@XmlEnumValue("First")
FIRST("First"),
@XmlEnumValue("Business")
BUSINESS("Business"),
@XmlEnumValue("Economy")
ECONOMY("Economy");
private final String value;
Я не мог понять, что здесь не так. Содержит ли Morphia статические внутренние классы или перечисления.
Как решить эту проблему?
Я думаю, что причина появления исключений, возможно, исходит от самого монгоба. – CLovinr
действительно хороший улов. –
@nazar_art Ваше изменение должно быть упомянуто в комментарии к этому ответу вместо фактического редактирования. – admdrew