2015-05-12 5 views
4
public class Address { 
    static mapWith = "mongo" 

    Region region; 
    Zone zone; 

    static mapping = { 
     id generator: 'identity' 
     region reference:true 
     zone reference:true 
    } 
} 

Мне интересно узнать, что такое reference:true.GORM: Что такое ссылка: true в блоке отображения класса домена Grails?

По моему опыту, оставляя его, дает точно такой же результат, кроме DBRef в фактическом документе монго.

ответ

2

Похоже reference контролирующими, как связаны документы.

Когда true, соответствующие документы, на которые ссылаются db-refs, если false, GORM вставляет простой id, известный Manual references в Монго

+0

Спасибо, инжектор! Есть ли какие-либо преимущества при наличии документов, на которые ссылается db-refs с GORM? В руководстве говорится: «Если у вас нет веских оснований для использования DBRefs, используйте вместо этого справочники вручную». –

+0

из того же документа: «Включая эти имена, DBRefs позволяют документам, расположенным в нескольких коллекциях, легче связываться с документами из одной коллекции». поэтому, если вам нужно связать документы из одной коллекции, ручные ссылки просто отлично – injecteer

+0

Но эту информацию можно найти в определении класса домена. Итак, GORM знает, какую коллекцию искать, видя класс поля, не так ли? –

1

Это означает, что эти свойства будут сохранены в вашей адресной записи по ссылке. Идентификатор для региона и идентификатор зоны будут существовать в записи, когда вы запрашиваете базу данных вместо хранения всего изображения объекта и любых объектов, которые могут содержать его сопоставление. Возвращение объекта Адрес будет выглядеть примерно так:

{ 
    "id": "2413", 
    "region": DBRef("region", "1234"), 
    "zone": DBRef("zone", "4321") 
} 

Для не-встроенных ассоциаций по умолчанию GORM для MongoDB будет отображать связи между документами с помощью ссылки базы данных MongoDB также известный как DBRefs. Если вы предпочитаете не использовать DBRefs, вы указываете GORM использовать прямые ссылки, используя ссылку: false mapping.

Gorm Mapping
Searchable Reference

+0

Ссылка, которую вы дали о 'Searchable', которые я не упомянул. –

+0

Я обновил ответ, чтобы показать ссылку на более релевантный контент. В ссылке Searchable используется ссылка: true mapping совпадает с отображением Gorm. Я думал, что эта концепция может быть получена из этой поисковой ссылки, независимо от того, какой ответ один и тот же. – dspano