我有一个将String作为ID的kundera模型实体。 像这样定义。

@Id
private String id;

我有一个这样的方法来执行本机查询。

/**
     * @param requestId
     * @return
     */
    public static ProcessRequest getRequest(Serializable requestId) {
        List<ProcessRequest> requests = execute("SELECT * from
            process_requests where id = '" + requestId + "';");
        return requests.isEmpty() ? null : requests.get(0);
    }

在运行像这样的单元测试时,出现以下异常。

17:50:38.716 [main] ERROR c.i.c.cassandra.CassandraClientBase - Error during executing query SELECT * from process_requests where id = '5b4468e0-6146-4fbc-81cf-571371834446';, Caused by: {} .
com.impetus.kundera.KunderaException: InvalidRequestException(why:Undefined name id in where clause ('id EQ '5b4468e0-6146-4fbc-81cf-571371834446''))
    at com.impetus.client.cassandra.CassandraClientBase.execute(CassandraClientBase.java:2101) [kundera-cassandra-2.14.jar:na]
    at com.impetus.client.cassandra.CassandraClientBase.executeCQLQuery(CassandraClientBase.java:1708) [kundera-cassandra-2.14.jar:na]
    at com.impetus.client.cassandra.CassandraClientBase$CQLClient.executeQuery(CassandraClientBase.java:1851) [kundera-cassandra-2.14.jar:na]
    at com.impetus.client.cassandra.CassandraClientBase.executeSelectQuery(CassandraClientBase.java:761) [kundera-cassandra-2.14.jar:na]
    at com.impetus.client.cassandra.thrift.ThriftClient.executeQuery(ThriftClient.java:860) [kundera-cassandra-2.14.jar:na]
    at com.impetus.client.cassandra.query.CassQuery.populateEntities(CassQuery.java:143) [kundera-cassandra-2.14.jar:na]
    at com.impetus.kundera.query.QueryImpl.fetch(QueryImpl.java:1013) [kundera-core-2.14.jar:na]
    at com.impetus.kundera.query.QueryImpl.getResultList(QueryImpl.java:164) [kundera-core-2.14.jar:na]

即使有一个由id定义的列,它也会给出此异常,我需要详尽的帮助,无法解决它。 您能帮忙解决这个问题吗?

更新:

CREATE TABLE docyard.process_requests (
id text PRIMARY KEY,
content_type text,
created_at timestamp,
document_id text,
lock bigint,
lock_expiration timestamp,
namespace text,
process_input text,
process_output text,
processed text,
updated_at timestamp,
version_id text
) WITH bloom_filter_fp_chance = 0.01
AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}'
AND comment = ''
AND compaction = {'min_threshold': '4', 'class':           'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy',       'max_threshold': '32'}
AND compression = {'sstable_compression': 'org.apache.cassandra.io.compress.LZ4Compressor'}
AND dclocal_read_repair_chance = 0.1
AND default_time_to_live = 0
AND gc_grace_seconds = 864000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.0
AND speculative_retry = '99.0PERCENTILE';
CREATE INDEX process_requests_lock_idx ON docyard.process_requests  (lock);
CREATE INDEX process_requests_processed_idx ON docyard.process_requests (processed);

#1楼 票数:1 已采纳

如果使用CQL2创建架构,则使用名称'key'创建具有任何名称的主键列。

如果您使用createQueryfindById则由Kundera处理。 由于您使用的是native query where id = ...更改为where key = ...

附注:与昆德拉合作时,首选CQL3。 您可以参考以获取有关CQL3的更多信息。

  ask by Santosh Tulasiram translate from so

未解决问题?本站智能推荐:

2回复

Kundera在查询中将字符串“1”强制转换为整数1

我得到下一个例外: 在执行下一段代码期间: 在日志中,我看到下一条记录,该记录显示Kundera向Cassandra发送的查询: 数据库中结构的定义: 类声明: 谁能解释我为什么昆德拉将字符串“ 1”转换为整数1? 我该如何避免呢? 谢谢
2回复

在kundera-cassandra的分页

我正在使用kundera-cassandra(V3.2)并希望限制选择查询。 这适用于以下代码: 我的问题是设置一个启动参数。 我找到了这个方法 但它不起作用。 有没有解决方案可以告诉select查询从哪里开始? 我无法在应用程序级别上执行此操作,因为查询由REST服务方法使用。
1回复

无法使用Kundera在Cassandra中插入timeuuid

我有这个卡桑德拉表: 和这个班: 坚持下去,我得到: 线程“主”中的异常com.impetus.kundera.KunderaException:java.lang.IllegalArgumentException:GenerationType.AUTO此客户端不支持策略:com.
1回复

在启用授权的情况下通过Kundera远程访问Cassandra的问题

我尝试将我的播放应用程序连接到Cassandra DB。 我尝试了本教程: http : //recipes4geeks.com/2013/07/06/play-nosql-building-nosql-applications-with-play-framework/ 我的设置的区别在于
1回复

Cassandra删除行后无法与Kundera保存

在尝试研究Casandra时,我们最近遇到了一个奇怪的问题。 我们当前的实现是Cassandra + Spring MVC + Kundera。 问题::我们正在尝试通过EntityManager的persist方法保存对象。 但是行为非常不一致,有时它没有将详细信息保存在DB上。 在
3回复

如何配置播放!与Cassandra一起使用kundera的框架项目

我正在使用Play! 2.0并尝试使用Cassandra数据库时遇到问题。 如何配置application.conf文件的属性以使用像Kundera这样的高级客户端。 我是否必须在conf / META-INF文件夹上创建persistence.xml文件? 我没有发现任何有类似问题的
2回复

如何为Cassandra启用show_sql或kundera中的等效项?

我需要根据cql日志进行监视和评估。 我试图在persistence.xml中设置show.sql / show_sql和show.cql / show_cql,但似乎没有任何帮助。
1回复

无法使用Kundera将对象列表存储为cassandra中父对象的参数之一

我有我存储在cassandra中的对象列表, 父对象是 我还有另一个属性deviceUsageParams,它是UDT对象的另一个列表, 我正在尝试使用Kundera包装器将Device对象的列表存储到cassandra中,但是如果UDT不允许我存储列表(即DeviceUsagePa