2016-06-20 12 views
0

Springを使用してCouchbaseにドキュメントを保存しています。いくつかのフィールドでは、追加情報が追加されます。couchbaseで春に余分な情報を保存する

POJO:

@Document public class PlayerTxn implements Serializable { 

    private static final long serialVersionUID = -2569497126561L; 

    @Id  private String id; 

    @Field private Date txnDate; 

    @Field private BigDecimal wagerAmount; 

    @Field private BigDecimal pointsAwarded; 

    @Field private String segment; 

RequiredResult:

{ "txnDate": 234234234324, "wagerAmount": 234.33, "pointsAwarded": 
23.2, "segment": "xxx" } 

最終結果:

{ "_class": "com.app.model.PlayerTxn", "segment": 
"xxx", "wagerAmount": { 
    "intCompact": 24312, 
    "scale": 2, 
    "precision": 5, 
    "stringCache": "243.12" }, "pointsAwarded": { 
    "intCompact": -9223372036854776000, 
    "scale": 38, 
    "precision": 0, 
    "intVal": { 
     "signum": 1, 
     "bitCount": 0, 
     "mag": [ 
     3800, 
     -457875904, 
     -1778440383, 
     -1805069212, 
     295579091 
     ], 
     "lowestSetBit": 0, 
     "firstNonzeroIntNum": 0, 
     "bitLength": 0 
    } }, "txnDate": 1466417747057 } 

がBigDecimalのcustomConverterを書かなければなりませんでした。

しかし、まだ "_class"がドキュメントに追加されています。どのように私はそれを削除できますか?あなたがBigDecimalの値のカスタム・コンバータを追加する必要があるよう

答えて

1

が見える、のようなもの:

// extend or add a customized couchbase config like this 
public class CustomCouchbaseConfig extends AbstractCouchbaseConfiguration { 

    @Override 
    public CustomConversions customConversions() { 
     return new CustomConversions(Arrays.asList(
      BigDecimalToString.INSTANCE,  
      StringToBigDecimalConverter.INSTANCE)); 
    } 

    @WritingConverter 
    public static enum BigDecimalToString implements Converter<BigDecimal, String> { 
     INSTANCE; 

     @Override 
     public String convert(BigDecimal source) { 
      // or a more appropriate implementation 
      return source.toString() ; 
     } 

    } 


    @ReadingConverter 
    public static enum StringToBigDecimalConverter implements Converter<String, BigDecimal> { 
     INSTANCE; 

     @Override 
     public BigDecimal convert(String source) { 
      return new BigDecimal(source); 
     } 

    } 

} 

はnullで安全なものを変換する方法を作るために、必ず!

は、より多くの情報のために春データCouchbaseのリファレンスを参照してください: http://docs.spring.io/spring-data/couchbase/docs/2.1.2.RELEASE/reference/html/#datatypes

編集:_class属性について 、_class背後にある理由のためにオリバーGierckeによってthis SO questionと解答を参照してください。 質問はMongoDBを対象としていますが、Couchbaseでも簡単に翻訳できます。

+0

こんにちはクリスチャン、ご返信ありがとうございます。私は問題を解決することができました(管理者はコメントを削除しました。元の投稿を編集するはずでしたが、私は知らなかった)。 – mickygo

+0

@mickygo、上記の私の編集を参照してください –

関連する問題