У меня есть следующие классы:Morphia custom converter: Могу ли я вставить вложенные поля объекта Java непосредственно в родительский документ?
@Entity(value="students", noClassnameStored=true)
public class Student {
@Id
private String studentId;
private String firstName;
private String lastName;
private Address address;
}
public class Address {
private String street;
private String city;
private Integer zip;
private String state;
}
Когда я сохранить экземпляры класса Student, я хочу, чтобы они были сохранены в следующем формате внутри базы данных Монго:
{
_id: "12345",
firstName: "Cler",
lastName: "Fit",
street: "123 xyz"
city: "unnt",
zip: 76443
state: "IM"
}
Другими словами , хотя сохраненный объект Java имеет вложенный элемент, я хочу, чтобы он был сохранен как плоская структура в результирующем документе. Могу ли я сделать это в Морфии? Я знаю, что могу это сделать, определив пользовательский конвертер в классе «Студент». Но у меня слишком много полей в этом классе, чем показано выше, и я не хочу индивидуально обрабатывать каждый из них. В идеале я хочу, чтобы пользовательский конвертер определялся в классе «Адрес», который, мы надеемся, может достичь того же результата.
Пробовал поиск в документации по API Morphia. К сожалению, ничего не упоминается в документации API.
Можете ли вы объяснить, почему вы хотите потерять вложенную структуру адреса? Это своего рода база данных документов, такая как Mongo –
Главным образом потому, что потребители, которые обращаются к данным из хранилища данных Mongo, предпочитают, чтобы они были плоскими. В противном случае многим потребителям придется менять разные вещи в своих приложениях. –