|
对于最新稳定版本,请使用 Spring Data Couchbase 6.0.4! |
ANSI 连接
本章描述了如何在实体之间使用 ANSI JOIN。 自 5.5 版本起,Couchbase 服务器支持通过字段连接文档的 ANSI JOIN。 早期版本仅支持索引和查找 JOIN,这些功能在 SDC 中只能通过直接通过 SDK 查询来支持。
跨仓库的实体之间的关系可以是一对一或多对一。 通过定义此类关系,可以获取关联实体的同步视图。
配置
可以通过使用@N1qlJoin注解实体的属性引用来获取关联实体。
前缀lks指代左侧键空间(当前实体),而rks指代右侧键空间(关联实体)。
对于@N1qlJoin注解,必需的元素是on子句,它是一个布尔表达式,表示左侧(lks)和右侧(rks)之间的连接条件,其中可以包含字段、常量表达式或任何复杂的N1QL表达式。
此外,还可以在注解中指定可选的where子句以用于连接,同样使用lks指代当前实体,使用rks指代关联实体。
示例 1. ANSI JOIN 的注解
@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;