2014-11-04 3 views
1

나는 Cassandra 2.1과 함께 Cassandra Object Mapping API을 사용하고 있습니다. 객체 (Mapper.get) Cassandra Object Mapping API는 현재 업데이트를 지원하지 않습니까?

  • 변화는
  • 개체를 저장 업데이트 할 필드 (점점

    1. 다음 API에서는 다음 단계를 수행하여 수행되는 행의 UPDATE처럼 보인다 INSERT 뒤에 SELECT로 변환 Mapper.save)

    . 기존 CQL3.1 UPDATE 문은 부분 업데이트를 위해 Cassandra Object Mapping API의 나중 단계에서 지원됩니까? 초기 읽기를 피하고 싶습니다.

  • 답변

    2
    1. 업데이트를 코딩하는 데 Accessor을 사용할 수 있습니다. update

    2. 투명 save 중 하나를 거 프록시 및 필드 인터셉터 (복잡한 IMPL)를 사용하여 필요로하는, 또는 실제로 읽기 - 전에 절약 안티 패턴을 숨기기로 이어질 것입니다.

    액세서리를 사용하면 맵핑 모듈이 뒤에서 마술을 수행하지 않아도 모든 것을 제공해야합니다.

    이 항목은 여기에 설명 된 : https://datastax-oss.atlassian.net/plugins/servlet/mobile#issue/JAVA-474

    +0

    감사 알렉스, 내가 락스 너희들이 가지고 올 것을 볼 수 있다고보고됩니다. 'Accessor'는 CQL 문을 작성하는 것과 거의 같습니다 (매우 유연합니다). 'Accessor' 문법의 한가지 문제점은 당신이 정적으로 업데이트 할 컬럼을 정의한다는 것입니다. 예 :'@Query ("UPDATE users SET first_name = : first, last_name = : last WHERE id = : id")'나는 그것을 이해할 때까지 항상'first'와'last'를 동시에 갱신해야합니다 . – reikje

    0

    이 매퍼를 시도 https://github.com/valchkou/cassandra-driver-mapping

    이 컬렉션

    https://github.com/valchkou/cassandra-driver-mapping#write

    mapper.updateValue(id, Entity.class, propertyName, value); 
    
    /** Append value to the Set, List or Map. */ 
    append(id, Entity.class, propertyName, value); 
    
    을 포함하여 부분 업데이트를 지원 또한 그것은 자동 스키마 동기화 기능이 있습니다 (및 몇 가지 더 많은 기능) datastax에 빠진 매퍼

    사용 예제 :

    중앙 받는다는 볼 수
    Entity entity = new Entity(); 
    mappingSession.save(entity); 
    entity = mappingSession.get(Entity.class, id); 
    mappingSession.delete(entity); 
    

    :

    <dependency> 
        <groupId>com.valchkou.datastax</groupId> 
        <artifactId>cassandra-driver-mapping</artifactId>   
    </dependency>