2016-03-02 3 views
0

У меня есть следующие классы: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.

+0

Можете ли вы объяснить, почему вы хотите потерять вложенную структуру адреса? Это своего рода база данных документов, такая как Mongo –

+0

Главным образом потому, что потребители, которые обращаются к данным из хранилища данных Mongo, предпочитают, чтобы они были плоскими. В противном случае многим потребителям придется менять разные вещи в своих приложениях. –

ответ

0

Morphia в настоящее время не поддерживает сплющенные документы, подобные этому, нет. Возможно, вы сможете добиться этого, используя @Pre - и @Post - аннотации для массажа данных в этой форме и из этой формы, но это много ручного сопоставления.

 Смежные вопросы

  • Нет связанных вопросов^_^