2015-08-22 3 views
0

У меня есть коллекция следующимHibernate OGM отображения на субколлекции

application 
* _id 
* name 
* desc 
* settings 
** _id 
** magento 
*** name 
*** keys 

Я использую следующий объект для отображения документа

@Entity 
@Table(name = "applications") 
public class ApplicationEntity { 

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
@Type(type = "objectid") 
private String id; 

@Column(name = "applicationName") 
private String name; 

@Column(name = "desc") 
private String desc; 

@Embedded 
@Column(name = "settings.magento") 
private MagentoSettings magentoSettings; 

Однако объект «MangetoSettings» может не отображаться и возврат null.

Мой вопрос в том, как я могу сопоставить вспомогательный документ (magento) без объявления родителя (настроек) в моем объекте?

Предположим, что документ «Настройки» содержит только «Magento», и он будет потрачен впустую, если объявить объект «Настройки» с единственным свойством.

Благодаря

ответ

0

Я нашел ответ в Jboss Hibernate док here

Вы можете переопределить имя столбца, используемого для свойства внедренного объекта. Но вам нужно знать, что имя столбца по умолчанию является конкатенацией свойства вложения, a. (точка) и встроенное свойство (рекурсивно для нескольких уровней внедренных объектов).

AttributeOverrides({ 
    @AttributeOverride(name="name", [email protected](name="settings.magento.name")), 
    @AttributeOverride(name="key", [email protected](name="settings.magento.key")) 
    }) 
private MagentoSettings magentoSettings; 

Благодаря

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