2013-07-30 58 views
0

我使用kundera 2.4作爲我的JPA與Cassandra交互。通過kundera jpa實體更改cassandra列值的數據類型

創建的列家族在卡桑德拉

create column family usageitem with key_validation_class = 'UTF8Type' 
and comparator = 'UTF8Type' ; 

通過卡桑德拉爲列假設默認的驗證類是BytesType。我想通過JPA實體將其更改爲UTF8Type

我不想上面列定義更改爲

create column family usageitem with key_validation_class = 
'UTF8Type' and comparator = 'UTF8Type' and default_validation_class = 
'UTF8Type' ; 

,因爲我不想碰我的現有數據庫定義

我JPA實體正在尋找這樣的事情 -

@Entity 
@Table(name = "usageitem", schema = "[email protected]") 
public class UsageItem {  

@Id 
@Column(name="record_id") 
private String recordID; 

@Column(name="provider_name",columnDefinition="UTF8Type") 
private String providerName; 

//Setters & Getters .... 

} 

所以,我應該如何在上述JPA實體插入數據我指定卡桑德拉列值的驗證類型n utf8或文本格式?

回答

0

首先,我會建議升級爲2.6版本。

其次,理想的數據類型應該與Cassandra數據類型同步。如果它是BytesType,它應該是字節或字節類型。

另外,如果列值在jpa實體中定義爲「字符串」,而那些是Cassandra中的BytesType,您能否分享您所得到的錯誤?

-Vivek爲列值

+0

數據類型可以(根據卡桑德拉)被添加或在任何時間在列家族定義改變。所以在這種情況下,我不需要爲cassandra數據類型同步列值。 –

+0

我沒有面臨任何運行時錯誤。我需要的是,當我查看cassandra-cli控制檯中通過上面的jpa實體插入的usageitem(列族)的數據時,它應該以文本或utf8格式顯示我而不是字節格式 –

+0

看看格式函數:http ://wiki.apache.org/cassandra/Cas​​sandraCli –