我可以重命名GORM的“版本”字段吗? (Grails 2.2 + GORM MongoDB)

时间:2013-08-18 23:04:06

标签: mongodb grails gorm optimistic-locking

我有一个已经有一个名为versions的属性的域对象,所以我想给内置的version属性赋一个不同的名称(在GORM中用于乐观锁定) )。例如,我想将其称为updateCount

请注意,我确实需要乐观锁定的语义;我只想给这个领域另一个名字。这是我天真的尝试(并没有奏效):

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

我非常感谢任何帮助...

  1. 确定这是否可行,
  2. 如果是这样,让它发挥作用: - )
  3. 谢谢!

1 个答案:

答案 0 :(得分: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