2013-08-18 1 views
2

У меня есть объект домена, у которого уже есть свойство versions, поэтому я хотел бы дать другое имя встроенному свойству version (используется в GORM для оптимистической блокировки). Например, я бы назвал его updateCount.Могу ли я переименовать поле «версия» GORM? (Grails 2.2 + GORM MongoDB)

Отметьте, что я действительно хочу семантику оптимистической блокировки; Я просто хочу дать полю другое имя. Вот что я наивно пытался (и это не работает):

class Item { 
    ObjectId id 
    static hasMany = [versions: ItemVersion] 
    static mapping = { 
     table 'item' 
     version column: 'updateCount' // <-- This was my attempt 
    } 
} 

Я определенно признателен за любую помощь в ...

  1. Определение, возможно ли это, и
  2. Если поэтому, заставляя его работать :-)

Спасибо!

+0

версия column: «updateCount» работал для меня - Grails 2.4.4 – toske

ответ

4

Первое что сначала. MongoDB (NoSQL) имеет дело с Documents and Collections instead of Table and rows.

Бытие говорит, что класс домен должен выглядеть следующим образом:

class Item { 
    ObjectId id 
    String itemName 

    static hasMany = [versions: ItemVersion] 
    static mapping = { 
     //Collection in Mongodb is to Table in relational world 
     collection 'item' 

     //attr in Mongodb is to column in relational world 
     itemName attr: 'item_name' 

     //After spending some time investigating it was found that 
     //attr for version does not make any difference 
     //The below would not work for implicit GORM variable "version" 
     //default attribute name is the variable name. 
     //version attr: 'updateCount' 

    } 
} 

В случае, если вы хотите, чтобы настроить свойство по умолчанию через домены для включения/выключения управления версиями, то взгляните на Global Mapping Configuration.

+0

Спасибо! Я определенно знаю разницу между базами данных MongoDB и SQL :-) Мне просто не удалось найти http://springsource.github.io/grails-data-mapping/mongo - именно то, что я искал! – Bosh

+0

Теперь, попробовав это предложение, я боюсь сказать, что это не сработает. @dmahapatro, можете ли вы подтвердить, что это действительно работает для вас? – Bosh

+0

@Bosh Вникая в это, я тоже не работаю для меня. Можете ли вы также проверить, работает ли он для существующего атрибута с именем «updateCount» в коллекции. – dmahapatro