对于最新的稳定版本,请使用 Spring Data Couchbase 5.3.1Spring中文文档

对于最新的稳定版本,请使用 Spring Data Couchbase 5.3.1Spring中文文档

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

跨存储库的实体之间的关系可以是一对一的,也可以是一对多的关系。 通过定义此类关系,可以获取关联实体的同步视图。Spring中文文档

配置

可以通过使用 . 前缀是指左侧键空间(当前实体),并指右侧键空间(关联实体)。 注释所需的元素是子句,这是一个布尔表达式,表示左侧 () 和右侧 () 之间的连接条件,可以是字段、常量表达式或任何复杂的 N1QL 表达式。 还可以在联接的注释上指定一个可选子句,类似地用于引用当前实体和引用关联的实体。@N1qlJoinlksrks@N1qlJoinonlksrkswherelksrksSpring中文文档

例 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;
     ...
}

懒惰获取

在首次访问属性时可以延迟提取关联的实体,这样可以节省获取比加载实体时所需的更多的数据。 若要延迟加载关联的实体,必须将注释的元素设置为 。 默认值为 。@N1qlJoinfetchTypeFetchType.LAZYFetchType.IMMEDIATESpring中文文档

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

ANSI 加入提示

使用索引提示

index元素可用于提供(当前实体)索引的提示,元素可用于提供(关联实体)索引。@N1qlJoinlksrightIndexrksSpring中文文档

哈希加入提示

如果联接类型将是哈希联接,则可以为(关联实体)指定哈希端。 如果关联的实体位于构建端,则可以将其指定为 else 。rksHashSide.BUILDHashSide.PROBESpring中文文档

使用键提示

keys元素可用于指定唯一的文档键以限制连接键空间。@N1qlJoinSpring中文文档