0

我有一个由 userId 分区的实体(请求)。对于每个 userId,我都会有一个索引,对吧?

但是,我想通过 userId 快速搜索请求。有没有一种简单的方法可以做到这一点?或者我需要选择另一个字段来创建分区?

4

1 回答 1

1

如果你愿意,你可以划分两种方式。假设你这样做

public class Request {
    @NoSqlId
    @NoSqlIndexed
    private String uniqueId;

    @NoSqlIndexed
    @NoSqlPartitionedBy
    @NoSqlManyToOne
    private User user;

    @NoSqlIndexed
    @NoSqlPartitionedBy
    private LocalDate beginningOfEachMonth;
}

如果您愿意,您可以使用私有 String userId 而不是 User ;)。

现在,您可以使用月初作为键查询时间分区,只需执行查询,或者您可以使用用户作为键查询用户分区。

如果您按两件事进行分区,则您的命名查询将是...

query="PARTITIONS("user", :user) SELECT r FROM TABLE as r"

如果您仅按用户对表进行分区,则可以编写

query="PARTITIONS(:user) SELECT r FROM TABLE as r"

注意:有时您需要像我一样索引主键的唯一原因是对主键进行范围查询....对于 pk= 某个值的等于查询,您显然不需要索引,因为您可以通过主键本身查找。

院长

于 2012-10-17T22:54:40.243 回答