2014-12-03 43 views
0

我想爲包含UDT列表的表使用Datastax的UDT映射器。嘗試實例化UDTmapper時,驅動程序拋出異常。它似乎無法映射代表我的UDT的類的實例列表。Datastax驅動程序異常,同時爲用戶定義類型列表實例化UDT映射器

用戶定義的類型和表與語句創建:

CREATE TYPE IF NOT EXISTS keyspace.value (
    id uuid, 
    values list<text> 
); 

CREATE TYPE IF NOT EXISTS keyspace.epoch (
    name text, 
    description text, 
    start_time timestamp, 
    duration int, 
    values list<frozen<value>> 
); 


CREATE TABLE IF NOT EXISTS keyspace.service_level_agreements (
    id uuid, 
    name text, 
    description text, 
    epochs list<frozen<epoch>>, 
    chargeback_info uuid, 
    PRIMARY KEY (id) 
); 

的類別是:

public class Value { 

@Field(name = "id") 
private UUID sloId; 


@Field(name = "values") 
private List<String> values; 
} 


public class Epoch { 

@Field(name = "name") 
private String name; 


@Field(name = "description") 
private String description; 


@Field(name = "start_time") 
private Date startTime; 


@Field(name = "duration") 
private long duration; 


@Field(name = "values") 
private List<Value> values; 
} 

@UDT (keyspace = "keyspace", name = "service_level_agreements") 
public class ServiceLevelAgreement e { 

@Field(name = "id") 
private UUID id; 

@Field(name = "name") 
private String name; 


@Field(name = "description") 
private String description; 


@Field(name = "epochs") 
private List<Epoch> epochs; 


@Field(name = "chargeback_info") 
private UUID charegebackInfo; 
} 

當我試圖實例UDT映射器我得到一個異常:

Cannot map unknown class com.me.Epoch for field private java.util.List com.me.ServiceLevelAgreement.epochs 

UDT映射器似乎無法爲Epoch類提供資金,儘管它在classp上ATH。我也嘗試在ServiceLevelAgreement中移動Epoch類,但它沒有幫助。任何想法我做錯了什麼?

回答

1

該問題是由於我誤解哪些類應該使用@UDT註釋標記而引起的。我把它放在表格註釋中,但它應該在描述我的UDT的類中。在我解決了註釋之後,一切都開始奏效。

相關問題