Skip to content

Commit 1a26270

Browse files
committed
Fix cross references
1 parent fb41c51 commit 1a26270

17 files changed

+43
-43
lines changed

modules/ROOT/pages/auditing.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Please refer to the store-specific section for configuration samples.
99

1010
[NOTE]
1111
====
12-
Applications that only track creation and modification dates are not required do make their entities implement <<auditing.auditor-aware, `AuditorAware`>>.
12+
Applications that only track creation and modification dates are not required do make their entities implement xref:auditing.adoc#auditing.auditor-aware[`AuditorAware`].
1313
====
1414

1515
[[auditing.annotations]]

modules/ROOT/pages/dependencies.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ You can find a working example of using the BOMs in our https://github.com/sprin
4949
== Dependency Management with Spring Boot
5050

5151
Spring Boot selects a recent version of the Spring Data modules for you. If you still want to upgrade to a newer version,
52-
set the `spring-data-bom.version` property to the <<dependencies.train-version,train version and iteration>>
52+
set the `spring-data-bom.version` property to the xref:dependencies.adoc#dependencies.train-version[train version and iteration]
5353
you would like to use.
5454

5555
See Spring Boot's https://docs.spring.io/spring-boot/docs/current/reference/html/dependency-versions.html#appendix.dependency-versions.properties[documentation]

modules/ROOT/pages/kotlin.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ Although Java does not let you express null safety in its type system, Spring Da
2525
By default, types from Java APIs used in Kotlin are recognized as https://kotlinlang.org/docs/reference/java-interop.html#null-safety-and-platform-types[platform types], for which null checks are relaxed.
2626
https://kotlinlang.org/docs/reference/java-interop.html#jsr-305-support[Kotlin support for JSR-305 annotations] and Spring nullability annotations provide null safety for the whole Spring Data API to Kotlin developers, with the advantage of dealing with `null` related issues at compile time.
2727

28-
See <<repositories.nullability>> how null safety applies to Spring Data Repositories.
28+
See xref:repositories-null-handling.adoc[Null Handling of Repository Methods] how null safety applies to Spring Data Repositories.
2929

3030
[TIP]
3131
====
@@ -40,4 +40,4 @@ NOTE: Generic type arguments, varargs, and array elements nullability are not su
4040
[[kotlin.mapping]]
4141
== Object Mapping
4242

43-
See <<mapping.kotlin>> for details on how Kotlin objects are materialized.
43+
See xref:object-mapping.adoc#mapping.kotlin[Kotlin support] for details on how Kotlin objects are materialized.

modules/ROOT/pages/object-mapping.adoc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,13 @@ For that we use the following algorithm:
7878
1. If the property is immutable but exposes a `with…` method (see below), we use the `with…` method to create a new entity instance with the new property value.
7979
2. If property access (i.e. access through getters and setters) is defined, we're invoking the setter method.
8080
3. If the property is mutable we set the field directly.
81-
4. If the property is immutable we're using the constructor to be used by persistence operations (see <<mapping.object-creation>>) to create a copy of the instance.
81+
4. If the property is immutable we're using the constructor to be used by persistence operations (see xref:object-mapping.adoc#mapping.object-creation[Object creation]) to create a copy of the instance.
8282
5. By default, we set the field value directly.
8383

8484
[[mapping.property-population.details]]
8585
.Property population internals
8686
****
87-
Similarly to our <<mapping.object-creation.details,optimizations in object construction>> we also use Spring Data runtime generated accessor classes to interact with the entity instance.
87+
Similarly to our xref:object-mapping.adoc#mapping.object-creation.details[optimizations in object construction] we also use Spring Data runtime generated accessor classes to interact with the entity instance.
8888
8989
[source,java]
9090
----
@@ -305,7 +305,7 @@ Spring Data automatically tries to detect a persistent entity's constructor to b
305305
The resolution algorithm works as follows:
306306

307307
1. If there is a constructor that is annotated with `@PersistenceCreator`, it is used.
308-
2. If the type is a <<mapping.kotlin,Kotlin data cass>> the primary constructor is used.
308+
2. If the type is a xref:object-mapping.adoc#mapping.kotlin[Kotlin data cass] the primary constructor is used.
309309
3. If there is a single static factory method annotated with `@PersistenceCreator` then it is used.
310310
4. If there is a single constructor, it is used.
311311
5. If there are multiple constructors and exactly one is annotated with `@PersistenceCreator`, it is used.

modules/ROOT/pages/query-by-example.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,9 @@ You can use it to create an `Example`.
5959
By default, fields having `null` values are ignored, and strings are matched by using the store specific defaults.
6060

6161
NOTE: Inclusion of properties into a Query by Example criteria is based on nullability.
62-
Properties using primitive types (`int`, `double`, …) are always included unless the <<query-by-example.matchers, `ExampleMatcher` ignores the property path>>.
62+
Properties using primitive types (`int`, `double`, …) are always included unless the xref:query-by-example.adoc#query-by-example.matchers[`ExampleMatcher` ignores the property path].
6363

64-
Examples can be built by either using the `of` factory method or by using <<query-by-example.matchers,`ExampleMatcher`>>. `Example` is immutable.
64+
Examples can be built by either using the `of` factory method or by using xref:query-by-example.adoc#query-by-example.matchers[`ExampleMatcher`]. `Example` is immutable.
6565
The following listing shows a simple Example:
6666

6767
.Simple Example

modules/ROOT/pages/repositories-null-handling.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Besides that, Spring Data supports returning the following wrapper types on quer
1111
Alternatively, query methods can choose not to use a wrapper type at all.
1212
The absence of a query result is then indicated by returning `null`.
1313
Repository methods returning collections, collection alternatives, wrappers, and streams are guaranteed never to return `null` but rather the corresponding empty representation.
14-
See "`<<repository-query-return-types>>`" for details.
14+
See "`xref:repository-query-return-types-reference.adoc[Repository query return types]`" for details.
1515

1616
[[repositories.nullability.annotations]]
1717
== Nullability Annotations

modules/ROOT/pages/repositories-scrolling.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
Scrolling is a more fine-grained approach to iterate through larger results set chunks.
55
Scrolling consists of a stable sort, a scroll type (Offset- or Keyset-based scrolling) and result limiting.
6-
You can define simple sorting expressions by using property names and define static result limiting using the <<repositories.limit-query-result,`Top` or `First` keyword>> through query derivation.
6+
You can define simple sorting expressions by using property names and define static result limiting using the xref:repositories-paging-sorting.adoc#repositories.limit-query-result[`Top` or `First` keyword] through query derivation.
77
You can concatenate expressions to collect multiple criteria into one expression.
88

99
Scroll queries return a `Window<T>` that allows obtaining the scroll position to resume to obtain the next `Window<T>` until your application has consumed the entire query result.

modules/ROOT/pages/repositories.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ This chapter explains the core concepts and interfaces of Spring Data repositori
1818
The information in this chapter is pulled from the Spring Data Commons module.
1919
It uses the configuration and code samples for the Jakarta Persistence API (JPA) module.
2020
ifeval::[{include-xml-namespaces} != false]
21-
If you want to use XML configuration you should adapt the XML namespace declaration and the types to be extended to the equivalents of the particular module that you use. "`<<repositories.namespace-reference>>`" covers XML configuration, which is supported across all Spring Data modules that support the repository API.
21+
If you want to use XML configuration you should adapt the XML namespace declaration and the types to be extended to the equivalents of the particular module that you use. "`xref:repository-namespace-reference.adoc#repositories.namespace-reference[null]`" covers XML configuration, which is supported across all Spring Data modules that support the repository API.
2222
endif::[]
2323
"`<<repository-query-keywords>>`" covers the query method keywords supported by the repository abstraction in general.
2424
For detailed information on the specific features of your module, see the chapter on that module of this document.

modules/ROOT/pages/repositories/core-extensions.adoc

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,11 @@ It also detects Spring HATEOAS on the classpath and registers integration compon
9393
[[core.web.basic]]
9494
=== Basic Web Support
9595

96-
The configuration shown in the <<core.web,previous section>> registers a few basic components:
96+
The configuration shown in the xref:repositories/core-extensions.adoc#core.web[previous section] registers a few basic components:
9797

98-
- A <<core.web.basic.domain-class-converter>> to let Spring MVC resolve instances of repository-managed domain classes from request parameters or path variables.
99-
- <<core.web.basic.paging-and-sorting,`HandlerMethodArgumentResolver`>> implementations to let Spring MVC resolve `Pageable` and `Sort` instances from request parameters.
100-
- <<core.web.basic.jackson-mappers, Jackson Modules>> to de-/serialize types like `Point` and `Distance`, or store specific ones, depending on the Spring Data Module used.
98+
- A xref:repositories/core-extensions.adoc#core.web.basic.domain-class-converter[Using the `DomainClassConverter` Class] to let Spring MVC resolve instances of repository-managed domain classes from request parameters or path variables.
99+
- xref:repositories/core-extensions.adoc#core.web.basic.paging-and-sorting[`HandlerMethodArgumentResolver`] implementations to let Spring MVC resolve `Pageable` and `Sort` instances from request parameters.
100+
- xref:repositories/core-extensions.adoc#core.web.basic.jackson-mappers[Jackson Modules] to de-/serialize types like `Point` and `Distance`, or store specific ones, depending on the Spring Data Module used.
101101

102102
[[core.web.basic.domain-class-converter]]
103103
==== Using the `DomainClassConverter` Class
@@ -130,7 +130,7 @@ NOTE: Currently, the repository has to implement `CrudRepository` to be eligible
130130
[[core.web.basic.paging-and-sorting]]
131131
==== HandlerMethodArgumentResolvers for Pageable and Sort
132132

133-
The configuration snippet shown in the <<core.web.basic.domain-class-converter,previous section>> also registers a `PageableHandlerMethodArgumentResolver` as well as an instance of `SortHandlerMethodArgumentResolver`.
133+
The configuration snippet shown in the xref:repositories/core-extensions.adoc#core.web.basic.domain-class-converter[previous section] also registers a `PageableHandlerMethodArgumentResolver` as well as an instance of `SortHandlerMethodArgumentResolver`.
134134
The registration enables `Pageable` and `Sort` as valid controller method arguments, as the following example shows:
135135

136136
.Using Pageable as a controller method argument
@@ -272,7 +272,7 @@ By default, the assembler points to the controller method it was invoked in, but
272272
=== Spring Data Jackson Modules
273273

274274
The core module, and some of the store specific ones, ship with a set of Jackson Modules for types, like `org.springframework.data.geo.Distance` and `org.springframework.data.geo.Point`, used by the Spring Data domain. +
275-
Those Modules are imported once <<core.web, web support>> is enabled and `com.fasterxml.jackson.databind.ObjectMapper` is available.
275+
Those Modules are imported once xref:repositories/core-extensions.adoc#core.web[web support] is enabled and `com.fasterxml.jackson.databind.ObjectMapper` is available.
276276

277277
During initialization `SpringDataJacksonModules`, like the `SpringDataJacksonConfiguration`, get picked up by the infrastructure, so that the declared ``com.fasterxml.jackson.databind.Module``s are made available to the Jackson `ObjectMapper`.
278278

@@ -294,7 +294,7 @@ Please refer to the store specific section for more details.
294294
[[core.web.binding]]
295295
=== Web Databinding Support
296296

297-
You can use Spring Data projections (described in <<projections>>) to bind incoming request payloads by using either https://goessner.net/articles/JsonPath/[JSONPath] expressions (requires https://github.com/json-path/JsonPath[Jayway JsonPath]) or https://www.w3.org/TR/xpath-31/[XPath] expressions (requires https://xmlbeam.org/[XmlBeam]), as the following example shows:
297+
You can use Spring Data projections (described in xref:repository-projections.adoc[Projections]) to bind incoming request payloads by using either https://goessner.net/articles/JsonPath/[JSONPath] expressions (requires https://github.com/json-path/JsonPath[Jayway JsonPath]) or https://www.w3.org/TR/xpath-31/[XPath] expressions (requires https://xmlbeam.org/[XmlBeam]), as the following example shows:
298298

299299
.HTTP payload binding using JSONPath or XPath expressions
300300
====
@@ -320,7 +320,7 @@ The `lastname` XML lookup is performed on the top-level of the incoming document
320320
The JSON variant of that tries a top-level `lastname` first but also tries `lastname` nested in a `user` sub-document if the former does not return a value.
321321
That way, changes in the structure of the source document can be mitigated easily without having clients calling the exposed methods (usually a drawback of class-based payload binding).
322322

323-
Nested projections are supported as described in <<projections>>.
323+
Nested projections are supported as described in xref:repository-projections.adoc[Projections].
324324
If the method returns a complex, non-interface type, a Jackson `ObjectMapper` is used to map the final value.
325325

326326
For Spring MVC, the necessary converters are registered automatically as soon as `@EnableSpringDataWebSupport` is active and the required dependencies are available on the classpath.

modules/ROOT/pages/repositories/custom-implementations.adoc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ interface UserRepository extends CrudRepository<User, Long>, CustomizedUserRepos
5454
Extending the fragment interface with your repository interface combines the CRUD and custom functionality and makes it available to clients.
5555

5656
Spring Data repositories are implemented by using fragments that form a repository composition.
57-
Fragments are the base repository, functional aspects (such as <<core.extensions.querydsl,QueryDsl>>), and custom interfaces along with their implementations.
57+
Fragments are the base repository, functional aspects (such as xref:repositories/core-extensions.adoc#core.extensions.querydsl[QueryDsl]), and custom interfaces along with their implementations.
5858
Each time you add an interface to your repository interface, you enhance the composition by adding a fragment.
5959
The base repository and repository aspect implementations are provided by each Spring Data module.
6060

@@ -216,7 +216,7 @@ If you annotate the `UserRepository` interface with `@Component("specialCustom")
216216
==== Manual Wiring
217217

218218
If your custom implementation uses annotation-based configuration and autowiring only, the preceding approach shown works well, because it is treated as any other Spring bean.
219-
If your implementation fragment bean needs special wiring, you can declare the bean and name it according to the conventions described in the <<repositories.single-repository-behaviour.ambiguity,preceding section>>.
219+
If your implementation fragment bean needs special wiring, you can declare the bean and name it according to the conventions described in the xref:repositories/custom-implementations.adoc#repositories.single-repository-behaviour.ambiguity[preceding section].
220220
The infrastructure then refers to the manually defined bean definition by name instead of creating one itself.
221221
The following example shows how to manually wire a custom implementation:
222222

@@ -250,7 +250,7 @@ endif::[]
250250
[[repositories.customize-base-repository]]
251251
== Customize the Base Repository
252252

253-
The approach described in the <<repositories.manual-wiring,preceding section>> requires customization of each repository interfaces when you want to customize the base repository behavior so that all repositories are affected.
253+
The approach described in the xref:repositories/custom-implementations.adoc#repositories.manual-wiring[preceding section] requires customization of each repository interfaces when you want to customize the base repository behavior so that all repositories are affected.
254254
To instead change behavior for all repositories, you can create an implementation that extends the persistence technology-specific repository base class.
255255
This class then acts as a custom base class for the repository proxies, as shown in the following example:
256256

modules/ROOT/pages/repositories/definition.adoc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ In such cases, a repository definition must distinguish between persistence tech
6868
When it detects multiple repository factories on the class path, Spring Data enters strict repository configuration mode.
6969
Strict configuration uses details on the repository or the domain class to decide about Spring Data module binding for a repository definition:
7070

71-
. If the repository definition <<repositories.multiple-modules.types,extends the module-specific repository>>, it is a valid candidate for the particular Spring Data module.
72-
. If the domain class is <<repositories.multiple-modules.annotations,annotated with the module-specific type annotation>>, it is a valid candidate for the particular Spring Data module.
71+
. If the repository definition xref:repositories/definition.adoc#repositories.multiple-modules.types[extends the module-specific repository], it is a valid candidate for the particular Spring Data module.
72+
. If the domain class is xref:repositories/definition.adoc#repositories.multiple-modules.annotations[annotated with the module-specific type annotation], it is a valid candidate for the particular Spring Data module.
7373
Spring Data modules accept either third-party annotations (such as JPA's `@Entity`) or provide their own annotations (such as `@Document` for Spring Data MongoDB and Spring Data Elasticsearch).
7474

7575
The following example shows a repository that uses module-specific interfaces (JPA in this case):
@@ -151,14 +151,14 @@ One is intended for JPA and the other for MongoDB usage.
151151
Spring Data is no longer able to tell the repositories apart, which leads to undefined behavior.
152152
====
153153

154-
<<repositories.multiple-modules.types,Repository type details>> and <<repositories.multiple-modules.annotations,distinguishing domain class annotations>> are used for strict repository configuration to identify repository candidates for a particular Spring Data module.
154+
xref:repositories/definition.adoc#repositories.multiple-modules.types[Repository type details] and xref:repositories/definition.adoc#repositories.multiple-modules.annotations[distinguishing domain class annotations] are used for strict repository configuration to identify repository candidates for a particular Spring Data module.
155155
Using multiple persistence technology-specific annotations on the same domain type is possible and enables reuse of domain types across multiple persistence technologies.
156156
However, Spring Data can then no longer determine a unique module with which to bind the repository.
157157

158158
The last way to distinguish repositories is by scoping repository base packages.
159159
Base packages define the starting points for scanning for repository interface definitions, which implies having repository definitions located in the appropriate packages.
160160
By default, annotation-driven configuration uses the package of the configuration class.
161-
The <<repositories.create-instances.xml,base package in XML-based configuration>> is mandatory.
161+
The xref:repositories/create-instances.adoc#repositories.create-instances.xml[base package in XML-based configuration] is mandatory.
162162

163163
The following example shows annotation-driven configuration of base packages:
164164

0 commit comments

Comments
 (0)