Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Spring数据Cassandara中映射UDT(用户定义类型)_Java_Cassandra_Spring Data_Spring Data Cassandra - Fatal编程技术网

Java 如何在Spring数据Cassandara中映射UDT(用户定义类型)

Java 如何在Spring数据Cassandara中映射UDT(用户定义类型),java,cassandra,spring-data,spring-data-cassandra,Java,Cassandra,Spring Data,Spring Data Cassandra,我使用的是Spring数据cassandra 1.5.0M1。 我找不到在POJO中映射自定义/UDT类型的方法。 我也看到了这个帖子。但我希望在新版本中增加对UDT类型的支持。 例如,我的Cassandra 3.7DB中有消息UDT CREATE TYPE MESSAGE (reply TEXT, time TIMESTAMP, user TEXT, patient UUID, status INT); 如何在实体POJO类中映射它 @Table("conversations") 公开课对

我使用的是Spring数据cassandra 1.5.0M1。 我找不到在POJO中映射自定义/UDT类型的方法。 我也看到了这个帖子。但我希望在新版本中增加对UDT类型的支持。 例如,我的Cassandra 3.7DB中有消息UDT

CREATE TYPE MESSAGE (reply TEXT, time TIMESTAMP, user TEXT, patient UUID, status INT);
如何在实体POJO类中映射它

@Table("conversations")
公开课对话{

@org.springframework.data.cassandra.mapping.PrimaryKey
private PrimaryKey primaryKey = new PrimaryKey();

@Column("status")
private Integer conversationStatus;

@Column("last_update")
private Date lastUpdate;

@Column("name")
private String name;

@Column("messages")
private List<Message> messages = new ArrayList<>();

public UUID getId() {
    return primaryKey.id;
}

public void setId(UUID id) {
    primaryKey.id = id;
}

public Integer getConversationStatus() {
    return conversationStatus;
}

public void setConversationStatus(Integer conversationStatus) {
    this.conversationStatus = conversationStatus;
}

public Date getLastUpdate() {
    return lastUpdate;
}

public void setLastUpdate(Date lastUpdate) {
    this.lastUpdate = lastUpdate;
}

public String getName() {
    return name;
}

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

public List<Message> getMessages() {
    return messages;
}

public void setMessages(List<Message> messages) {
    this.messages = messages;
}

@Override
public boolean equals(Object obj) {
    if (obj == null) {
        return false;
    }
    if (obj == this) {
        return true;
    }
    if (obj.getClass() != getClass()) {
        return false;
    }
    final Conversation rhs = (Conversation) obj;
    return new EqualsBuilder()
            .append(this.primaryKey.id, rhs.primaryKey.id)
            .append(this.conversationStatus, rhs.conversationStatus)
            .append(this.lastUpdate, rhs.lastUpdate)
            .append(this.name, rhs.name)
            .append(this.messages, rhs.messages)
            .isEquals();
}

@Override
public int hashCode() {
    return new HashCodeBuilder()
            .append(primaryKey)
            .append(conversationStatus)
            .append(lastUpdate)
            .append(name)
            .append(messages)
            .toHashCode();
}

@Override
public String toString() {
    return new ToStringBuilder(this)
            .append("primaryKey", primaryKey)
            .append("conversationStatus", conversationStatus)
            .append("lastUpdate", lastUpdate)
            .append("name", name)
            .append("messages", messages)
            .toString();
}

public static final class PrimaryKey implements Serializable {

    private static final long serialVersionUID = 4188262171705712608L;

    @PrimaryKeyColumn(name = "id", ordinal = 0, type = PrimaryKeyType.PARTITIONED)
    private UUID id;

    public PrimaryKey() {
    }

    public PrimaryKey(UUID id) {
        this.id = id;
    }

    public UUID getId() {
        return id;
    }

    public void setId(UUID id) {
        this.id = id;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (obj == this) {
            return true;
        }
        if (obj.getClass() != getClass()) {
            return false;
        }
        final PrimaryKey rhs = (PrimaryKey) obj;
        return new EqualsBuilder()
                .append(this.id, rhs.id)
                .isEquals();
    }

    @Override
    public int hashCode() {
        return new HashCodeBuilder()
                .append(id)
                .toHashCode();
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this)
                .append("id", id)
                .toString();
    }
}
}
@org.springframework.data.cassandra.mapping.PrimaryKey
private PrimaryKey PrimaryKey=新PrimaryKey();
@栏(“状态”)
私有整数会话状态;
@列(“上次更新”)
私人日期最新更新;
@列(“名称”)
私有字符串名称;
@栏(“消息”)
私有列表消息=新的ArrayList();
公共UUID getId(){
返回primaryKey.id;
}
公共无效设置id(UUID id){
primaryKey.id=id;
}
公共整数getConversationStatus(){
返回会话状态;
}
public void setConversationStatus(整数conversationStatus){
this.conversationStatus=会话状态;
}
公共日期getLastUpdate(){
返回最新更新;
}
公共作废setLastUpdate(日期lastUpdate){
this.lastUpdate=lastUpdate;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共列表getMessages(){
返回消息;
}
公共消息(列出消息){
this.messages=消息;
}
@凌驾
公共布尔等于(对象obj){
if(obj==null){
返回false;
}
如果(obj==此){
返回true;
}
如果(obj.getClass()!=getClass()){
返回false;
}
最终对话rhs=(对话)obj;
返回新的EqualBuilder()
.append(this.primaryKey.id,rhs.primaryKey.id)
.append(this.conversationStatus,rhs.conversationStatus)
.append(this.lastUpdate,rhs.lastUpdate)
.append(this.name,rhs.name)
.append(this.messages、rhs.messages)
.isEquals();
}
@凌驾
公共int hashCode(){
返回新的HashCodeBuilder()
.append(主密钥)
.append(会话状态)
.append(最新更新)
.append(名称)
.append(消息)
.toHashCode();
}
@凌驾
公共字符串toString(){
返回新的ToStringBuilder(此)
.append(“primaryKey”,primaryKey)
.append(“会话状态”,会话状态)
.append(“lastUpdate”,lastUpdate)
.append(“name”,name)
.append(“消息”,消息)
.toString();
}
公共静态最终类PrimaryKey实现可序列化{
私有静态最终长serialVersionUID=4188262171705712608L;
@PrimaryKeyColumn(name=“id”,序号=0,类型=PrimaryKeyType.PARTITIONED)
私有UUID;
公钥{
}
公共主密钥(UUID id){
this.id=id;
}
公共UUID getId(){
返回id;
}
公共无效设置id(UUID id){
this.id=id;
}
@凌驾
公共布尔等于(对象obj){
if(obj==null){
返回false;
}
如果(obj==此){
返回true;
}
如果(obj.getClass()!=getClass()){
返回false;
}
最终主密钥rhs=(主密钥)obj;
返回新的EqualBuilder()
.append(this.id,rhs.id)
.isEquals();
}
@凌驾
公共int hashCode(){
返回新的HashCodeBuilder()
.append(id)
.toHashCode();
}
@凌驾
公共字符串toString(){
返回新的ToStringBuilder(此)
.append(“id”,id)
.toString();
}
}
}

提前感谢。

1.5.0.M1不支持此功能,但M2或RC1版本将提供此功能。通过使用
@UserDefinedType
,我们有一个支持UDT映射的开放PR,请查看您是否知道M2或RC1的发布时间?除11月底的Ingalls RC1外()请参见此处的答案:1.5.0.M1不支持此功能,但M2或RC1版本将提供此功能。通过使用
@UserDefinedType
,我们有一个支持UDT映射的开放PR,请查看您是否知道M2或RC1的发布时间?除11月底的Ingalls RC1外()请参见此处的答案: