2014-12-03 2 views
0

Я пытаюсь использовать UDT-карту Datastax для таблицы, которая содержит список UDT. Водитель создает исключение при попытке создать экземпляр UDTmapper. Кажется, что невозможно отобразить список экземпляров класса, который представляет мой UDT.Исключение драйвера Datastax при создании экземпляра UDT-mapper для списка определяемых пользователем типов

определенные пользователем типы и таблицы создаются с помощью операторов:

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, хотя он находится на классеp ATH. Я также попытался переместить класс Epoch внутри ServiceLevelAgreement, но это не помогло. Любая идея, что я делаю неправильно?

ответ

1

Проблема была вызвана моим непониманием, какой класс должен быть помечен аннотацией @UDT. Я помещаю его вместо аннотации таблицы, но это должно быть в классе, который описывает мой UDT. После того, как я исправил аннотации, все приступило к работе.

Смежные вопросы