此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Data Couchbase 5.5.2spring-doc.cadn.net.cn

ANSI 连接

本章介绍如何跨实体使用 ANSI 联接。从 5.5 版本开始,Couchbase 服务器支持使用 ANSI 联接使用字段联接文档。以前的版本允许索引和查找联接,SDC 中仅通过直接通过 SDK 查询来支持这些联接。spring-doc.cadn.net.cn

跨存储库的实体之间的关系可以是一对一或一对多。通过定义此类关系,可以获取关联实体的同步视图。spring-doc.cadn.net.cn

配置

可以通过使用@N1qlJoin. 前缀lks指左侧键空间(当前实体),并且rks指右侧键空间(关联实体)。的必需元素@N1qlJoin注释是on子句,一个布尔表达式,表示左侧 (lks) 和右侧 (rks),它可以是字段、常量表达式或任何复杂的 N1QL 表达式。也可以有一个可选的where子句,类似地使用lks引用当前实体和rks以引用关联实体。spring-doc.cadn.net.cn

示例 1.ANSI 连接的注释
@Document
public class Author {
      @Id
      String id;

      String name;

      @N1qlJoin(on = "lks.name=rks.authorName")
      List<Book> books;

      @N1qlJoin(on = "lks.name=rks.name")
      Address address;
     ...
}

延迟获取

可以在首次访问属性时延迟获取关联实体,这可以节省在加载实体时获取比所需更多的数据。要延迟加载关联实体,@N1qlJoin注释的元素fetchType必须设置为FetchType.LAZY. 默认值为FetchType.IMMEDIATE.spring-doc.cadn.net.cn

示例 2.延迟获取的配置
@N1qlJoin(on = "lks.name=rks.authorName", fetchType = FetchType.LAZY)
List<Book> books;

ANSI 连接提示

使用索引提示

index元素在@N1qlJoin可用于为lks(当前实体)索引和rightIndex元素可用于提供rks(关联实体)索引。spring-doc.cadn.net.cn

哈希连接提示

如果连接类型将是哈希连接,则可以为rks(关联实体)。如果关联实体位于构建端,则可以将其指定为HashSide.BUILDHashSide.PROBE.spring-doc.cadn.net.cn

使用键提示

keys元素在@N1qlJoin注释可用于指定唯一的文档键,以限制连接键空间。spring-doc.cadn.net.cn