ANSI 联接
本章介绍如何跨实体使用 ANSI 联接。 从 5.5 版本开始,Couchbase Server 提供了对 ANSI 联接的支持,以便使用字段联接文档。 以前的版本允许索引和查找连接,这在SDC中只能通过直接通过SDK进行查询来支持。
跨存储库的实体之间的关系可以是一对一或一对多。 通过定义此类关系,可以获取关联实体的同步视图。
配置
可以通过使用 .
前缀是指左侧键空间(当前实体),也是指右侧键空间(关联实体)。
注释所需的元素是 clause,这是一个布尔表达式,表示左侧 () 和右侧 () 之间的连接条件,可以是字段、常量表达式或任何复杂的 N1QL 表达式。
还可以在联接的注释上指定一个可选子句,同样用于引用当前实体和引用关联的实体。@N1qlJoin
lks
rks
@N1qlJoin
on
lks
rks
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;
...
}
延迟获取
关联实体可以在第一次访问属性时延迟获取,这可以节省在加载实体时获取的数据量超过所需的数据。
要延迟加载关联的实体,必须将 annotation 的 element 设置为 .
默认值为 .@N1qlJoin
fetchType
FetchType.LAZY
FetchType.IMMEDIATE
示例 2.延迟获取的配置
@N1qlJoin(on = "lks.name=rks.authorName", fetchType = FetchType.LAZY)
List<Book> books;