2016-07-08 5 views
1

저는 CouchBase 4.5와 Spring Data CouchBase를 사용하여 새로운 프로젝트를 시작하고 있습니다. 나는 그것이 카우치베이스 주식회사 CrudRepository를 사용하여 저장Spring Data Couchbase가 id 필드를 유지하도록하려면 어떻게해야합니까?

@Document 
public class ItemType implements Serializable { 
    private static final long serialVersionUID = -874553420214538944L; 

    @Id 
    @Field 
    private String key; 

    @Field 
    private String displayName; 

    @Field 
    private int appAccountId; 

    @Field 
    private Map<String, FieldType> fieldTypes; 

    public String getKey() { 
     return key; 
    } 

    public void setKey(String key) { 
     this.key = key; 
    } 

    public String getDisplayName() { 
     return displayName; 
    } 

    public void setDisplayName(String displayName) { 
     this.displayName = displayName; 
    } 

    public int getAppAccountId() { 
     return appAccountId; 
    } 

    public void setAppAccountId(int appAccountId) { 
     this.appAccountId = appAccountId; 
    } 

    public Map<String, FieldType> getFieldTypes() { 
     return fieldTypes; 
    } 

    public void setFieldTypes(Map<String, FieldType> fieldTypes) { 
     this.fieldTypes = fieldTypes; 
    } 
} 

, 그것은 DB에이처럼 바람 :

{ 
    "_class": "com.mycompany.models.ItemType", 
    "appAccountId": 2, 
    "displayName": "Image - External", 
    "fieldTypes": { 
    "location": { 
     "rank": 1, 
     "type": "String", 
     "publishCascade": false, 
     "displayName": "Location", 
     "displayAttributes": { 
     "uiDisplayType": "TEXT_FIELD" 
     } 
    } 
    } 
} 

모두가 "키"필드를 제외하고 좋은 것 I는 다음과 같습니다 엔티티가 문서에 유지되지 않습니다. @Field 주석을 사용하거나 사용하지 않고 시도했지만 결과는 같습니다. @Id 필드가 DB에 유지되도록하는 방법이 있습니까?

답변

1

스프링 데이터 카우치베이스 주식회사 구현 카우치베이스 주식회사에서 문서 키로 @Id 필드를 사용합니다. 그런 다음 지속성 동안 해당 필드를 무시하고 @Field은 변경하지 않습니다. 한 속성의 값이 두 장소에있을 것 때문에

정말이 답이라고 생각 ...

+0

그럼 현재 문서에 독립적 인 문서의 참조를 어떻게 추가할까요? – talhaocakci

0

예약어를 치는 중입니까?

"key"를 "keyz"와 같은 것으로 변경하면 작동합니까?

내가 그 KEY를 참조 할 수는 N1QL에 예약 된 단어입니다 -

http://developer.couchbase.com/documentation/server/current/n1ql/n1ql-language-reference/reservedwords.html

+0

터무니, 역 직렬화 논리를 복잡하게 할이 특별한 경우에 @Field을 무시하지! 불행히도, 나는 keyz와 id와 같은 몇 가지 다른 필드 이름을 시도했지만 어느 것도 나타나지 않았습니다. – Jared

+0

예약 진 단어는 역 틱으로 이스케이프 처리 할 수 ​​있습니다. – geraldss