2013-08-18 4 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

버전 열 : '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' 

    } 
} 

당신이 다음 버전을 ON/OFF 스위치 Global Mapping Configuration 좀보고 도메인에서 기본 속성을 구성하려면 :

는 존재처럼 도메인 클래스가 보일 것입니다,라고 말했다.

+0

고마워요! 나는 분명히 MongoDB와 SQL 데이터베이스의 차이점을 알고있다 :-) 나는 단지 http://springsource.github.io/grails-data-mapping/mongo를 찾을 수 없었다. 정확히 내가 무엇을 찾고 있었는지! – Bosh

+0

이제 제안을 시도한 후에 작동하지 않는다고 생각합니다. @ dmahapatro, 당신이 실제로 당신을 위해 작동하는지 확인할 수 있습니까? – Bosh

+0

@ 보쉬 그것을 보면서, 나는 나를 위해 일하지 않는다. 또한 콜렉션에서 이름이 'updateCount' 인 기존 속성에 대해 작동하는지 테스트 할 수 있습니다. – dmahapatro