Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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
Cassandra Datastax映射程序抱怨生成的insert语句中存在重复列_Cassandra_Datastax_Datastax Java Driver - Fatal编程技术网

Cassandra Datastax映射程序抱怨生成的insert语句中存在重复列

Cassandra Datastax映射程序抱怨生成的insert语句中存在重复列,cassandra,datastax,datastax-java-driver,Cassandra,Datastax,Datastax Java Driver,版本:Datastax Java驱动程序3.1.4,Cassandra 3.10 考虑下表: create table object_ta ( objid bigint, version_date timestamp, objecttype ascii, primary key (objid, version_date) ); 和一个映射类: @Table(name = "object_ta") public class ObjectTa {

版本:Datastax Java驱动程序3.1.4,Cassandra 3.10

考虑下表:

create table object_ta
(
  objid         bigint,
  version_date  timestamp,
  objecttype    ascii,
  primary key  (objid, version_date)
);
和一个映射类:

@Table(name = "object_ta")
public class ObjectTa
{
    @Column(name = "objid")
    private long objid;
    @Column(name = "version_date")
    private Instant versionDate;
    @Column(name = "objecttype")
    private String objectType;

    public ObjectTa()
    {
    }

    public ObjectTa(long objid)
    {
        this.objid = objid;
        this.versionDate = Instant.now();
    }

    public long getObjId()
    {
        return objid;
    }

    public void setObjId(long objid)
    {
        this.objid = objid;
    }

    public Instant getVersionDate()
    {
        return versionDate;
    }

    public void setVersionDate(Instant versionDate)
    {
        this.versionDate = versionDate;
    }

    public String getObjectType()
    {
        return objectType;
    }

    public void setObjectType(String objectType)
    {
        this.objectType = objectType;
    }
}
为此类创建映射器后(
mm
是mykeyspace上会话的
MappingManager

我明白了

查询准备失败:插入mykeyspace.object\u ta (objid,objid,version_date,objecttype)值(?,,,?);: com.datastax.driver.core.exceptions.InvalidQueryException:列 名称中包含重复项 com.datastax.driver.core.Responses$Error.asException(Responses.java:136) 在 com.datastax.driver.core.SessionManager$4.apply(SessionManager.java:220) 在 com.datastax.driver.core.SessionManager$4.apply(SessionManager.java:196) 在 com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:906) 在 com.google.common.util.concurrent.Futures$1$1.run(Futures.java:635) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137) 运行(Thread.java:745)

我无法理解为什么在查询中生成重复的
objid

提前感谢您对问题的指点


Clemens

我认为这是因为字段名(
objid
)与setter/getter(
getObjId
)不一致地使用case。如果将
getObjId
setObjId
分别重命名为
getObjId
setObjId
,我相信这可能会奏效


在未来的版本中,驱动程序映射器将允许用户更明确地了解是否使用setter/getter(),以及命名约定是什么()。

这很有帮助,在重命名getter和setter以匹配您建议的情况后,它会起作用。非常感谢你!
final Mapper<ObjectTa> mapper = mm.mapper(ObjectTa.class);
mapper.save(new ObjectTa(1));