对于最新的稳定版本,请使用 Spring Data Couchbase 5.5.2! |
ANSI 连接
本章介绍如何跨实体使用 ANSI 联接。 从 5.5 版本开始,Couchbase 服务器支持 ANSI 连接,以使用字段连接文档。 以前的版本允许索引和查找联接,SDC 中仅通过直接通过 SDK 查询来支持这些联接。
跨存储库的实体之间的关系可以是一对一或一对多。 通过定义此类关系,可以获取关联实体的同步视图。
配置
可以通过使用@N1qlJoin
.
前缀lks
指左侧键空间(当前实体),并且rks
指右侧键空间(关联实体)。
所需的元素@N1qlJoin
注释是on
子句,一个布尔表达式,表示左侧 (lks
) 和右侧 (rks
),可以是字段、常量表达式或任何复杂的 N1QL 表达式。
还可以有一个可选的where
子句,类似地使用lks
引用当前实体和rks
以引用关联实体。
示例 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
.
示例 2.延迟获取的配置
@N1qlJoin(on = "lks.name=rks.authorName", fetchType = FetchType.LAZY)
List<Book> books;