2016-01-20 51 views
0

我正在從Cassandra 2.1遷移到v3,因此使用新的Java Driver v3。 對已由驅動程序附加模塊EnumOrdinalCodec和EnumNameCodec交換的@Enumerated(EnumType.STRING)或ORDINAL進行了更改。Cassandra Java驅動程序3 EnumNameCodec

在我的項目我有:

@Column(name = "myColumn") 
    @Enumerated(EnumType.STRING) 
    private myEnum   currentMyEnum   ; 

我查找了有關如何使用他們,但並沒有真正瞭解他們是如何工作的一些例子。 我發現的主要信息是這樣的例子:

enum Foo {...} 
enum Bar {...} 

// register the appropriate codecs 
CodecRegistry.DEFAULT_INSTANCE 
    .register(new EnumOrdinalCodec<Foo>(Foo.class)) 
    .register(new EnumNameCodec<Bar>(Bar.class)) 

// the following mappings are handled out-of-the-box 
@Table 
public class MyPojo { 
    private Foo foo; 
    private List<Bar> bars; 
    ... 
} 

哪一個不清楚。看起來他們把枚舉,編解碼器和DAO模型放在同一個文件中。在我的項目中,枚舉和DAO模型文件不同,當我嘗試將「CodecRegistry.DEFAULT_INSTANCE.register(new EnumOrdinalCodec(myEnum.class))」放在etheir enum或DAO文件中時,IDE Eclipse中出現錯誤。

如果有人可以幫助我如何chnage @Enumerated(EnumType.STRING)使用EnumNameCodec預先感謝。

回答

1

看起來他們把枚舉,編解碼器和DAO模式在同一個文件

這只是一個代碼示例。在一個真實的項目中,這3個代碼塊被放到不同的文件中

當您創建Cluster對象時,您可以註冊一個編解碼器註冊表(使用new CodecRegistry創建一個)。此編解碼器註冊表將負責將非本地類型(如Java枚舉類型)轉換爲支持的CQL Java類型。

例如通過註冊new EnumOrdinalCodec<Foo>(Foo.class),您可以使用枚舉Foo在任何Java豆(即使集合內的類似名單<美孚>)和對象映射器將自動檢測存在的枚舉Foo轉換成CQL整數編解碼器代碼

+0

非常感謝你的回答,真正幫助我。我完全是數據庫和noSQL的新手,我不知道如何註冊一個編解碼器註冊表。如果你有代碼的例子,我會很高興看到。提前致謝。 –

0

實例註冊自定義的編解碼器(從司機採取DOC):

Cluster cluster = Cluster.builder()..... ; //Create the cluster singleton somewhere 

// Create the enum codec 
EnumOrdinalCodec<Foo> myEnumCodec = new EnumOrdinalCodec<Foo>(Foo.class) 

// Retrieve the codec registry from the cluster configuration 
// IF you didn't configure any codec registry, a default empty codec registry 
// will be returned 
CodecRegistry myCodecRegistry = cluster.getConfiguration().getCodecRegistry(); 

// Register your codec here 
myCodecRegistry.register(myEnumCodec); 
+0

我已經嘗試過,並且還在emum中直接靜態存儲「CodecRegistry.DEFAULT_INSTANCE .register(new EnumOrdinalCodec (myEnum.class))」。在嘗試存儲數據時都會提供該結果:找不到請求操作的編解碼器:[varchar <-> com.path.path.common.pojo.myEnum] –

+0

對不起,看起來像我錯過了導入。 Doanduyhai描述的作品。謝謝你的幫助。 –

相關問題