gpt4 book ai didi

java - 需要添加允许访问 Cassandra 过滤

转载 作者:行者123 更新时间:2023-11-30 10:27:47 25 4
gpt4 key购买 nike

我有如下的 Cassandra 表

create table user(
id UUID PRIMARY KEY,
firstname varchar,
secondname varchar,
emailid varchar,
);

从 Java - Spring Boot 我正在尝试访问数据

Optional<User> findByEmailid(String emailId);

我收到错误说明

它要求我使用查询的“允许过滤”部分。无论如何要在全局范围内启用它,或者我应该更改查询/数据库结构?

最佳答案

该错误告诉您 emailid 不是可以在 WHERE 子句中过滤的有效列。启用 ALLOW FILTERING 或在该列上创建二级索引是执行此操作的一种方法。但这两个都是非常糟糕的解决方案(因为 Cassandra 是如何在后台工作的)。

对于 Cassandra,您需要采用基于查询的建模方法。这意味着有时(经常)查询和表共享 1:1 的比例。如果您确实需要通过电子邮件地址查询用户,则需要创建一个表来为该查询提供服务。

CREATE TABLE user_by_email(
id UUID,
firstname varchar,
secondname varchar,
emailid varchar PRIMARY KEY,
);

然后像这样的东西会起作用:

Optional<UserByEmail> findByEmailid(String emailId);

如果您不打算通过 id 查询 user 表,那么就没有理由将该列用作您唯一的主键.

关于java - 需要添加允许访问 Cassandra 过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45117975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com