在java中结合udt使用cassandraMap器

ilmyapht  于 2021-06-09  发布在  Cassandra
关注(0)|答案(1)|浏览(418)

我对cassandra完全是新手,有一个问题:我定义了一个简单的udt import com.datastax.oss.driver.api.mapper.annotations.cqlname;

@CqlName("emailaddress")

public class EmailAddress {
    private String name;
    private String email_address;

    public EmailAddress() {}
    public EmailAddress(String name, String emailAddress) {
        this.name = name;
        this.email_address = emailAddress;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail_address() {
        return email_address;
    }

    public void setEmail_address(String email_address) {
        this.email_address = email_address;
    }
}

我的实体定义如下:
....

@Frozen
private List<EmailAddress> participants;

.....
我用一个方法save()创建了简单的dao,但是当我试图运行它时,我得到了以下错误
在实体类com.salesforceiq.graph.sigparser.signatures中定义的cql ks.table:signature\u data.signatures声明编解码器注册表不支持的类型Map:field:participants,实体类型:com.salesforceiq.graph.sigparser.emailaddress,cql type:udt(signature\u data.emailaddress)java.lang.illegalargumentexception:实体类com.salesforceiq.graph.sigparser.signatures中定义的cql ks.table:signature\u data.signatures声明编解码器注册表不支持的类型Map:field:participants,实体类型:com.salesforceiq.graph.sigparser.emailaddress,cql类型:udt(signature\u data.emailaddress)
我可能错过了一些注解为我的udt,但我不知道哪一个

bnlyeluc

bnlyeluc1#

我假设你用 @Entity . 有关示例,请参见cassandrajava驱动程序的entities页面。
它似乎无法正常工作 participants 列。不支持其类型,因此您可能需要为其实现自定义编解码器。有关详细信息,请参阅“自定义编解码器”页。干杯!

相关问题