我正在尝试使用datastax访问器(使用映射器)。

我的访问器定义如下:

@Accessor
public interface TableAccessor {
    @Query(
        "INSERT INTO tableName " +
        "(id, data)" +
        "VALUES (:beanId, :beanData)")
    public ResultSet insertProblem(@Param("bean") Bean bean);


和我的豆定义为。

@Table(name="tableName")
public class Bean {
    @PartitionKey
    @Column(name = "id")
    private int beanId;

    @PartitionKey
    @Column(name = "data")
    private Date beanData;

   // Setters and getters omitted
}


我的问题是当我尝试类似的事情时:

insertProblem(@Param("bean") Bean bean)


我不断收到错误消息,告诉我我的参数编号不匹配。

最佳答案

我不确定甚至不可能发送对象并映射该对象的属性(可能是点符号,但没有检查代码或文档)。如果您使用UDT并且在数据库中将Bean作为UDT,也许您的表示法将起作用。

可以肯定的是:

@Accessor
public interface TableAccessor {
    @Query(
        "INSERT INTO tableName " +
        "(id, data)" +
        "VALUES (:beanId, :beanData)")
    public ResultSet insertProblem(@Param("beanId") int beanId, @Param("beanData") Date beanData);


而且您用insertProblem(bean.getBeanId(), bean.getBeanData())调用方法

关于java - DataStax访问器bean作为绑定(bind)参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27430611/

10-09 19:07