Skip to content
This repository was archived by the owner on Jul 27, 2026. It is now read-only.

Commit 5267d56

Browse files
Bump org.springframework.boot from 3.5.8 to 4.0.0 in /backend (#3491)
* Bump org.springframework.boot from 3.5.8 to 4.0.0 in /backend Bumps [org.springframework.boot](https://github.com/spring-projects/spring-boot) from 3.5.8 to 4.0.0. - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](spring-projects/spring-boot@v3.5.8...v4.0.0) --- updated-dependencies: - dependency-name: org.springframework.boot dependency-version: 4.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> * Bump org.springframework.cloud:spring-cloud-starter-kubernetes-client-config Bumps [org.springframework.cloud:spring-cloud-starter-kubernetes-client-config](https://github.com/spring-cloud/spring-cloud-kubernetes) from 3.3.0 to 5.0.0. - [Release notes](https://github.com/spring-cloud/spring-cloud-kubernetes/releases) - [Commits](spring-cloud/spring-cloud-kubernetes@v3.3.0...v5.0.0) --- updated-dependencies: - dependency-name: org.springframework.cloud:spring-cloud-starter-kubernetes-client-config dependency-version: 5.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> * Bump org.hibernate:hibernate-jpamodelgen in /backend Bumps [org.hibernate:hibernate-jpamodelgen](https://github.com/hibernate/hibernate-orm) from 6.6.36.Final to 7.1.11.Final. - [Release notes](https://github.com/hibernate/hibernate-orm/releases) - [Changelog](https://github.com/hibernate/hibernate-orm/blob/7.1.11/changelog.txt) - [Commits](hibernate/hibernate-orm@6.6.36...7.1.11) --- updated-dependencies: - dependency-name: org.hibernate:hibernate-jpamodelgen dependency-version: 7.1.11.Final dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> * Fix flyway RISDEV-10437 * Replace PostgreSQLEnumJdbcType with NAMED_ENUM RISDEV-10437 * Rename HttpHeaders#containsKey to containsHeader RISDEV-10437 * Replace hibernate NullPrecedence with jpa Nulls RISDEV-10437 * Adjust spring module names RISDEV-10437 * Fix test dependencies RISDEV-10437 * Add missing MockitoExtension RISDEV-10437 * Update to jackson 3 * Replace ObjectMapper with JsonMapper * Remove no longer needed json converters * Remove jsr310 time * Adjust jackson imports We need to use Jackson 2 for the patch imports but want to use Jackson 3 for everything else RISDEV-10437 * Parse JsonPatch using jackson 2 The library we use for json patch support does not support Jackson 3 yet Therefore, we created a Serializer and Deserializer that call the Jackson 2 ObjectMapper for the JsonPatch class. RISDEV-10437 * Fix deserialization of null values for booleans RISDEV-10437 * Fix criteria for creatingDocumentationOffice The field creatingDocumentationOffice couldn't be found as it is only part of DocumentationUnitDTO. With Spring Boot 4 the Root object needs to actually be created from the correct class (it worked before eventhough creatingDocumentationOffice is only a part of DecisionDTO). RISDEV-10437 * Fix use of redis in health check RISDEV-10437 * Fix searching linkable documentation units RISDEV-10437 * Use JPA Metamodel API instead of strings RISDEV-10437 * Update neuris-juris-xml-export RISDEV-10437 * Add deprecation Javadoc comments RISDEV-10437 * Remove unneeded throws statements RISDEV-10437 * Replace deprecated JacksonXmlRootElement RISDEV-10437 --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Malte Laukötter <malte.laukoetter@digitalservice.bund.de>
1 parent d1a752a commit 5267d56

63 files changed

Lines changed: 288 additions & 206 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

backend/build.gradle.kts

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import java.io.Serializable
1111
plugins {
1212
java
1313
jacoco
14-
id("org.springframework.boot") version "3.5.8"
14+
id("org.springframework.boot") version "4.0.0"
1515
id("io.spring.dependency-management") version "1.1.7"
1616
id("com.diffplug.spotless") version "8.1.0"
1717
id("org.sonarqube") version "7.2.1.6560"
@@ -153,20 +153,21 @@ sonar {
153153
dependencies {
154154
val testContainersVersion = "2.0.2"
155155

156-
implementation("org.springframework.boot:spring-boot-starter-web")
156+
implementation("org.springframework.boot:spring-boot-starter-webmvc")
157157
implementation("org.springframework.boot:spring-boot-starter-actuator")
158158
implementation("org.springframework.boot:spring-boot-starter-data-redis")
159159
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
160160
implementation("org.springframework.boot:spring-boot-starter-validation")
161161
implementation("org.springframework.boot:spring-boot-autoconfigure")
162162
implementation("org.springframework.session:spring-session-data-redis")
163163
implementation("org.springframework.boot:spring-boot-starter-security")
164-
implementation("org.springframework.boot:spring-boot-starter-oauth2-client") {
164+
implementation("org.springframework.boot:spring-boot-starter-security-oauth2-client") {
165165
exclude(group = "net.minidev", module = "json-smart")
166166
}
167167
implementation("org.springframework.security:spring-security-oauth2-resource-server:7.0.0")
168+
implementation("org.springframework.boot:spring-boot-starter-flyway")
168169

169-
implementation("org.springframework.cloud:spring-cloud-starter-kubernetes-client-config:3.3.0")
170+
implementation("org.springframework.cloud:spring-cloud-starter-kubernetes-client-config:5.0.0")
170171

171172
// CVE-2022-3171
172173
implementation("com.google.protobuf:protobuf-java:4.33.2")
@@ -197,22 +198,23 @@ dependencies {
197198
implementation("com.icegreen:greenmail:2.1.7")
198199

199200
// package served by private repo, requires authentication:
200-
implementation("de.bund.digitalservice:neuris-juris-xml-export:0.10.45") {
201+
implementation("de.bund.digitalservice:neuris-juris-xml-export:0.10.46") {
201202
exclude(group = "org.slf4j", module = "slf4j-simple")
202203
}
203204
// for local development:
204-
// implementation(files("../../neuris-juris-xml-export/build/libs/neuris-juris-xml-export-0.10.45.jar"))
205+
// implementation(files("../../neuris-juris-xml-export/build/libs/neuris-juris-xml-export-0.10.46.jar"))
205206
// or with local gradle project (look also into settings.gradle.kts)
206207
// implementation(project(":exporter"))
207208

208209
implementation("de.bund.digitalservice:neuris-caselaw-migration-schema:0.0.118")
209210
// for local development:
210211
// implementation(files("../../ris-data-migration/schema/build/libs/schema-0.0.118.jar"))
211212

212-
implementation("com.fasterxml.jackson.core:jackson-core:2.20.1")
213-
implementation("com.fasterxml.jackson.core:jackson-databind:2.20.1")
213+
implementation("tools.jackson.core:jackson-core:3.0.2")
214+
implementation("tools.jackson.core:jackson-databind:3.0.2")
214215
implementation("com.fasterxml.jackson.core:jackson-annotations:2.20")
215-
implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.20.1")
216+
implementation("tools.jackson.dataformat:jackson-dataformat-xml:3.0.2")
217+
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.20.1")
216218

217219
implementation("com.gravity9:json-patch-path:2.0.2")
218220

@@ -251,6 +253,15 @@ dependencies {
251253
testImplementation("org.springframework.boot:spring-boot-starter-test") {
252254
exclude(group = "org.mockito", module = "mockito-core")
253255
}
256+
257+
testImplementation("org.springframework.boot:spring-boot-starter-webmvc-test")
258+
testImplementation("org.springframework.boot:spring-boot-starter-actuator-test")
259+
testImplementation("org.springframework.boot:spring-boot-starter-data-redis-test")
260+
testImplementation("org.springframework.boot:spring-boot-starter-data-jpa-test")
261+
testImplementation("org.springframework.boot:spring-boot-starter-validation-test")
262+
testImplementation("org.springframework.boot:spring-boot-starter-security-test")
263+
testImplementation("org.springframework.boot:spring-boot-starter-security-oauth2-client-test")
264+
testImplementation("org.springframework.boot:spring-boot-starter-flyway-test")
254265
testImplementation("org.mockito:mockito-junit-jupiter:5.21.0")
255266
testImplementation("org.mockito:mockito-inline:5.2.0")
256267

@@ -263,7 +274,7 @@ dependencies {
263274

264275
compileOnly("org.projectlombok:lombok")
265276
annotationProcessor("org.projectlombok:lombok")
266-
annotationProcessor("org.hibernate:hibernate-jpamodelgen:6.6.36.Final")
277+
annotationProcessor("org.hibernate:hibernate-jpamodelgen:7.1.11.Final")
267278

268279
developmentOnly("org.springframework.boot:spring-boot-devtools")
269280
}

backend/src/main/java/de/bund/digitalservice/ris/caselaw/adapter/JurisXmlExporterWrapper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package de.bund.digitalservice.ris.caselaw.adapter;
22

3-
import com.fasterxml.jackson.databind.ObjectMapper;
43
import de.bund.digitalservice.ris.caselaw.domain.Decision;
54
import de.bund.digitalservice.ris.caselaw.domain.LegalPeriodicalEdition;
65
import de.bund.digitalservice.ris.caselaw.domain.Reference;
@@ -14,6 +13,7 @@
1413
import javax.xml.parsers.ParserConfigurationException;
1514
import javax.xml.transform.TransformerException;
1615
import javax.xml.transform.TransformerFactory;
16+
import tools.jackson.databind.ObjectMapper;
1717

1818
/** Wraps the Juris XML exporter to provide a common interface for XML export. */
1919
public class JurisXmlExporterWrapper implements XmlExporter {

backend/src/main/java/de/bund/digitalservice/ris/caselaw/adapter/PortalPublicationService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package de.bund.digitalservice.ris.caselaw.adapter;
22

3-
import com.fasterxml.jackson.databind.ObjectMapper;
43
import de.bund.digitalservice.ris.caselaw.adapter.caselawldml.CaseLawLdml;
54
import de.bund.digitalservice.ris.caselaw.adapter.database.jpa.AttachmentDTO;
65
import de.bund.digitalservice.ris.caselaw.adapter.database.jpa.AttachmentRepository;
@@ -30,6 +29,7 @@
3029
import lombok.extern.slf4j.Slf4j;
3130
import org.springframework.data.mapping.MappingException;
3231
import org.springframework.stereotype.Service;
32+
import tools.jackson.databind.ObjectMapper;
3333

3434
@Service
3535
@Slf4j

backend/src/main/java/de/bund/digitalservice/ris/caselaw/adapter/S3AttachmentService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public S3AttachmentService(
7575
public Attachment attachFileToDocumentationUnit(
7676
UUID documentationUnitId, ByteBuffer byteBuffer, HttpHeaders httpHeaders, User user) {
7777
String fileName =
78-
httpHeaders.containsKey("X-Filename")
78+
httpHeaders.containsHeader("X-Filename")
7979
? httpHeaders.getFirst("X-Filename")
8080
: "Kein Dateiname gefunden";
8181

backend/src/main/java/de/bund/digitalservice/ris/caselaw/adapter/database/jpa/DecisionDTO.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@
3232
import lombok.ToString;
3333
import lombok.experimental.Accessors;
3434
import lombok.experimental.SuperBuilder;
35-
import org.hibernate.annotations.JdbcType;
36-
import org.hibernate.dialect.PostgreSQLEnumJdbcType;
35+
import org.hibernate.annotations.JdbcTypeCode;
3736
import org.hibernate.proxy.HibernateProxy;
37+
import org.hibernate.type.SqlTypes;
3838

3939
@Getter
4040
@Setter
@@ -270,7 +270,7 @@ public class DecisionDTO extends DocumentationUnitDTO {
270270
/** Rechtsmittel zugelassen durch */
271271
@Column(name = "appeal_admitted_by")
272272
@Enumerated(EnumType.STRING)
273-
@JdbcType(PostgreSQLEnumJdbcType.class)
273+
@JdbcTypeCode(SqlTypes.NAMED_ENUM)
274274
private AppealAdmitter appealAdmittedBy;
275275

276276
/** Rechtsmittel */

backend/src/main/java/de/bund/digitalservice/ris/caselaw/adapter/database/jpa/DuplicateRelationDTO.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
import lombok.Getter;
2222
import lombok.NoArgsConstructor;
2323
import lombok.Setter;
24-
import org.hibernate.annotations.JdbcType;
25-
import org.hibernate.dialect.PostgreSQLEnumJdbcType;
24+
import org.hibernate.annotations.JdbcTypeCode;
25+
import org.hibernate.type.SqlTypes;
2626

2727
@Getter
2828
@Setter
@@ -37,7 +37,7 @@ public class DuplicateRelationDTO {
3737

3838
@Column(name = "status")
3939
@Enumerated(EnumType.STRING)
40-
@JdbcType(PostgreSQLEnumJdbcType.class)
40+
@JdbcTypeCode(SqlTypes.NAMED_ENUM)
4141
private DuplicateRelationStatus relationStatus;
4242

4343
@ManyToOne(fetch = FetchType.LAZY)

backend/src/main/java/de/bund/digitalservice/ris/caselaw/adapter/database/jpa/IncomeTypeDTO.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
import lombok.NoArgsConstructor;
1818
import lombok.Setter;
1919
import lombok.ToString;
20-
import org.hibernate.annotations.JdbcType;
21-
import org.hibernate.dialect.PostgreSQLEnumJdbcType;
20+
import org.hibernate.annotations.JdbcTypeCode;
21+
import org.hibernate.type.SqlTypes;
2222

2323
@Getter
2424
@Setter
@@ -38,7 +38,7 @@ public class IncomeTypeDTO {
3838

3939
@Column(name = "type_of_income")
4040
@Enumerated(EnumType.STRING)
41-
@JdbcType(PostgreSQLEnumJdbcType.class)
41+
@JdbcTypeCode(SqlTypes.NAMED_ENUM)
4242
private TypeOfIncome typeOfIncome;
4343

4444
@Column @NotNull private Long rank;

backend/src/main/java/de/bund/digitalservice/ris/caselaw/adapter/database/jpa/OriginOfTranslationDTO.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
import lombok.Getter;
2323
import lombok.NoArgsConstructor;
2424
import lombok.Setter;
25-
import org.hibernate.annotations.JdbcType;
26-
import org.hibernate.dialect.PostgreSQLEnumJdbcType;
25+
import org.hibernate.annotations.JdbcTypeCode;
26+
import org.hibernate.type.SqlTypes;
2727

2828
@Getter
2929
@Setter
@@ -43,7 +43,7 @@ public class OriginOfTranslationDTO {
4343

4444
@Column(name = "translation_type")
4545
@Enumerated(EnumType.STRING)
46-
@JdbcType(PostgreSQLEnumJdbcType.class)
46+
@JdbcTypeCode(SqlTypes.NAMED_ENUM)
4747
private TranslationType translationType;
4848

4949
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)

backend/src/main/java/de/bund/digitalservice/ris/caselaw/adapter/database/jpa/PostgresDocumentationUnitRepositoryImpl.java

Lines changed: 42 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -955,10 +955,7 @@ public Slice<RelatedDocumentationUnit> searchLinkableDocumentationUnits(
955955
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
956956
CriteriaQuery<DocumentationUnitDTO> criteriaQuery =
957957
criteriaBuilder.createQuery(DocumentationUnitDTO.class);
958-
Root<? extends DocumentationUnitDTO> root =
959-
onlyPendingProceedings
960-
? criteriaQuery.from(PendingProceedingDTO.class)
961-
: criteriaQuery.from(DocumentationUnitDTO.class);
958+
Root<DocumentationUnitDTO> root = criteriaQuery.from(DocumentationUnitDTO.class);
962959

963960
// Conditions setup
964961
Predicate conditions = criteriaBuilder.conjunction(); // Start with an empty conjunction (AND)
@@ -976,15 +973,16 @@ public Slice<RelatedDocumentationUnit> searchLinkableDocumentationUnits(
976973
// 1. Filter by document number
977974
if (documentNumberToExclude != null) {
978975
Predicate documentNumberPredicate =
979-
criteriaBuilder.notEqual(root.get("documentNumber"), documentNumberToExclude);
976+
criteriaBuilder.notEqual(
977+
root.get(DocumentationUnitDTO_.documentNumber), documentNumberToExclude);
980978
conditions = criteriaBuilder.and(conditions, documentNumberPredicate);
981979
}
982980

983981
// 2. Filter by court type
984982
if (courtType != null) {
985983
Predicate courtTypePredicate =
986984
criteriaBuilder.like(
987-
criteriaBuilder.upper(root.get("court").get("type")),
985+
criteriaBuilder.upper(root.get(DocumentationUnitDTO_.court).get(CourtDTO_.type)),
988986
"%" + courtType.toUpperCase() + "%");
989987
conditions = criteriaBuilder.and(conditions, courtTypePredicate);
990988
}
@@ -993,71 +991,81 @@ public Slice<RelatedDocumentationUnit> searchLinkableDocumentationUnits(
993991
if (courtLocation != null) {
994992
Predicate courtLocationPredicate =
995993
criteriaBuilder.like(
996-
criteriaBuilder.upper(root.get("court").get("location")),
994+
criteriaBuilder.upper(root.get(DocumentationUnitDTO_.court).get(CourtDTO_.location)),
997995
"%" + courtLocation.toUpperCase() + "%");
998996
conditions = criteriaBuilder.and(conditions, courtLocationPredicate);
999997
}
1000998

1001999
// 4. Filter by decision date
10021000
if (decisionDate != null) {
1003-
Predicate decisionDatePredicate = criteriaBuilder.equal(root.get("date"), decisionDate);
1001+
Predicate decisionDatePredicate =
1002+
criteriaBuilder.equal(root.get(DocumentationUnitDTO_.date), decisionDate);
10041003
conditions = criteriaBuilder.and(conditions, decisionDatePredicate);
10051004
}
10061005

10071006
// 5. Filter by file number
10081007
if (fileNumber != null) {
1009-
Join<DocumentationUnitDTO, String> fileNumberJoin = root.join("fileNumbers", JoinType.LEFT);
1008+
Join<DocumentationUnitDTO, FileNumberDTO> fileNumberJoin =
1009+
root.join(DocumentationUnitDTO_.fileNumbers, JoinType.LEFT);
10101010
Predicate fileNumberPredicate =
10111011
criteriaBuilder.like(
1012-
criteriaBuilder.upper(fileNumberJoin.get("value")), fileNumber.toUpperCase() + "%");
1012+
criteriaBuilder.upper(fileNumberJoin.get(FileNumberDTO_.value)),
1013+
fileNumber.toUpperCase() + "%");
10131014
conditions = criteriaBuilder.and(conditions, fileNumberPredicate);
10141015
}
10151016

10161017
// 6. Filter by document type
10171018
if (documentType != null) {
10181019
Predicate documentTypePredicate =
10191020
criteriaBuilder.equal(
1020-
root.get("documentType"), DocumentTypeTransformer.transformToDTO(documentType));
1021+
root.get(DocumentationUnitDTO_.documentType),
1022+
DocumentTypeTransformer.transformToDTO(documentType));
10211023
conditions = criteriaBuilder.and(conditions, documentTypePredicate);
10221024
}
10231025

1024-
// 7. Filter by publication status
1025-
final String PUBLICATION_STATUS = "publicationStatus";
1026-
final String STATUS = "status";
1027-
Predicate documentationOfficeIdPredicate =
1028-
criteriaBuilder.equal(
1029-
root.get("documentationOffice").get("id"), documentationOfficeDTO.getId());
1030-
1031-
// 8. Filter by document number
1026+
// 7. Filter by document number
10321027
if (documentNumber != null) {
10331028
conditions =
10341029
criteriaBuilder.and(
10351030
conditions,
10361031
criteriaBuilder.like(
1037-
criteriaBuilder.upper(root.get("documentNumber")),
1032+
criteriaBuilder.upper(root.get(DocumentationUnitDTO_.documentNumber)),
10381033
"%" + documentNumber.trim().toUpperCase() + "%"));
10391034
}
10401035

1036+
// 8. Filter by onlyPendingProceedings
1037+
if (onlyPendingProceedings) {
1038+
conditions =
1039+
criteriaBuilder.and(
1040+
conditions, criteriaBuilder.equal(root.type(), PendingProceedingDTO.class));
1041+
}
1042+
1043+
// 9. Filter by publication status
1044+
Predicate documentationOfficeIdPredicate =
1045+
criteriaBuilder.equal(
1046+
root.get(DocumentationUnitDTO_.documentationOffice).get(DocumentationOfficeDTO_.id),
1047+
documentationOfficeDTO.getId());
1048+
10411049
Predicate publicationStatusPredicate =
10421050
criteriaBuilder.or(
10431051
criteriaBuilder.equal(
1044-
root.get(STATUS).get(PUBLICATION_STATUS), PublicationStatus.PUBLISHED),
1052+
root.get(DocumentationUnitDTO_.status).get(StatusDTO_.publicationStatus),
1053+
PublicationStatus.PUBLISHED),
10451054
criteriaBuilder.equal(
1046-
root.get(STATUS).get(PUBLICATION_STATUS), PublicationStatus.PUBLISHING));
1055+
root.get(DocumentationUnitDTO_.status).get(StatusDTO_.publicationStatus),
1056+
PublicationStatus.PUBLISHING));
10471057

10481058
Predicate externalHandoverPendingPredicate =
1049-
// PendingProceedings don't have a `creatingDocumentationOffice` so this predicate does not
1050-
// work when filtering
1051-
// for PendingProceedings.
1052-
onlyPendingProceedings
1053-
? criteriaBuilder.disjunction()
1054-
: criteriaBuilder.and(
1055-
criteriaBuilder.equal(
1056-
root.get(STATUS).get(PUBLICATION_STATUS),
1057-
PublicationStatus.EXTERNAL_HANDOVER_PENDING),
1058-
criteriaBuilder.equal(
1059-
root.get("creatingDocumentationOffice").get("id"),
1060-
documentationOfficeDTO.getId()));
1059+
criteriaBuilder.and(
1060+
criteriaBuilder.equal(
1061+
root.get(DocumentationUnitDTO_.status).get(StatusDTO_.publicationStatus),
1062+
PublicationStatus.EXTERNAL_HANDOVER_PENDING),
1063+
criteriaBuilder.equal(
1064+
criteriaBuilder
1065+
.treat(root, DecisionDTO.class)
1066+
.get(DecisionDTO_.creatingDocumentationOffice)
1067+
.get(DocumentationOfficeDTO_.id),
1068+
documentationOfficeDTO.getId()));
10611069

10621070
Predicate finalPredicate =
10631071
criteriaBuilder.or(

backend/src/main/java/de/bund/digitalservice/ris/caselaw/adapter/database/jpa/PostgresDocumentationUnitSearchRepositoryImpl.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import jakarta.persistence.criteria.CriteriaQuery;
1919
import jakarta.persistence.criteria.Expression;
2020
import jakarta.persistence.criteria.Join;
21+
import jakarta.persistence.criteria.Nulls;
2122
import jakarta.persistence.criteria.Order;
2223
import jakarta.persistence.criteria.Path;
2324
import jakarta.persistence.criteria.Predicate;
@@ -35,7 +36,6 @@
3536
import java.util.UUID;
3637
import lombok.Builder;
3738
import lombok.extern.slf4j.Slf4j;
38-
import org.hibernate.query.NullPrecedence;
3939
import org.hibernate.query.criteria.HibernateCriteriaBuilder;
4040
import org.hibernate.query.criteria.JpaPredicate;
4141
import org.jetbrains.annotations.NotNull;
@@ -564,14 +564,12 @@ private List<Order> getOrderCriteria(
564564
if (parameters.scheduledOnly || parameters.handoverDate.isPresent()) {
565565
orderCriteria.add(
566566
cb.desc(root.get(DocumentationUnitDTO_.scheduledPublicationDateTime))
567-
.nullPrecedence(NullPrecedence.LAST));
567+
.nullPrecedence(Nulls.LAST));
568568
orderCriteria.add(
569-
cb.desc(root.get(DocumentationUnitDTO_.lastHandoverDateTime))
570-
.nullPrecedence(NullPrecedence.LAST));
569+
cb.desc(root.get(DocumentationUnitDTO_.lastHandoverDateTime)).nullPrecedence(Nulls.LAST));
571570
}
572571

573-
orderCriteria.add(
574-
cb.desc(root.get(DocumentationUnitDTO_.date)).nullPrecedence(NullPrecedence.LAST));
572+
orderCriteria.add(cb.desc(root.get(DocumentationUnitDTO_.date)).nullPrecedence(Nulls.LAST));
575573
orderCriteria.add(cb.desc(root.get(DocumentationUnitDTO_.documentNumber)));
576574
return orderCriteria;
577575
}

0 commit comments

Comments
 (0)