diff --git a/apache-kafka-2/README.md b/apache-kafka-2/README.md
index ec9e8e2adc..157078f023 100644
--- a/apache-kafka-2/README.md
+++ b/apache-kafka-2/README.md
@@ -7,3 +7,4 @@ You can build the project from the command line using: *mvn clean install*, or i
### Relevant Articles:
- [Guide to Check if Apache Kafka Server Is Running](https://www.baeldung.com/apache-kafka-check-server-is-running)
+- [Add Custom Headers to a Kafka Message](https://www.baeldung.com/java-kafka-custom-headers)
diff --git a/apache-poi/pom.xml b/apache-poi/pom.xml
index 546eedec5b..78781cf215 100644
--- a/apache-poi/pom.xml
+++ b/apache-poi/pom.xml
@@ -30,6 +30,16 @@
+
+ org.dhatim
+ fastexcel
+ ${fastexcel.version}
+
+
+ org.dhatim
+ fastexcel-reader
+ ${fastexcel.version}
+
@@ -52,6 +62,7 @@
5.2.0
1.0.6
+ 0.15.3
3.2.0
diff --git a/apache-poi/src/main/java/com/baeldung/fastexcel/FastexcelHelper.java b/apache-poi/src/main/java/com/baeldung/fastexcel/FastexcelHelper.java
new file mode 100644
index 0000000000..9d6041b66e
--- /dev/null
+++ b/apache-poi/src/main/java/com/baeldung/fastexcel/FastexcelHelper.java
@@ -0,0 +1,63 @@
+package com.baeldung.fastexcel;
+
+import org.dhatim.fastexcel.Workbook;
+import org.dhatim.fastexcel.Worksheet;
+import org.dhatim.fastexcel.reader.Cell;
+import org.dhatim.fastexcel.reader.ReadableWorkbook;
+import org.dhatim.fastexcel.reader.Row;
+import org.dhatim.fastexcel.reader.Sheet;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Stream;
+
+public class FastexcelHelper {
+
+ public Map> readExcel(String fileLocation) throws IOException {
+ Map> data = new HashMap<>();
+
+ try (FileInputStream file = new FileInputStream(fileLocation); ReadableWorkbook wb = new ReadableWorkbook(file)) {
+ Sheet sheet = wb.getFirstSheet();
+ try (Stream rows = sheet.openStream()) {
+ rows.forEach(r -> {
+ data.put(r.getRowNum(), new ArrayList<>());
+
+ for (Cell cell : r) {
+ data.get(r.getRowNum()).add(cell.getRawValue());
+ }
+ });
+ }
+ }
+
+ return data;
+ }
+
+ public void writeExcel() throws IOException {
+ File currDir = new File(".");
+ String path = currDir.getAbsolutePath();
+ String fileLocation = path.substring(0, path.length() - 1) + "fastexcel.xlsx";
+
+ try (OutputStream os = Files.newOutputStream(Paths.get(fileLocation)); Workbook wb = new Workbook(os, "MyApplication", "1.0")) {
+ Worksheet ws = wb.newWorksheet("Sheet 1");
+
+ ws.width(0, 25);
+ ws.width(1, 15);
+
+ ws.range(0, 0, 0, 1).style().fontName("Arial").fontSize(16).bold().fillColor("3366FF").set();
+ ws.value(0, 0, "Name");
+ ws.value(0, 1, "Age");
+
+ ws.range(2, 0, 2, 1).style().wrapText(true).set();
+ ws.value(2, 0, "John Smith");
+ ws.value(2, 1, 20L);
+ }
+ }
+}
diff --git a/apache-poi/src/test/java/com/baeldung/fastexcel/FastexcelIntegrationTest.java b/apache-poi/src/test/java/com/baeldung/fastexcel/FastexcelIntegrationTest.java
new file mode 100644
index 0000000000..a36c06e41f
--- /dev/null
+++ b/apache-poi/src/test/java/com/baeldung/fastexcel/FastexcelIntegrationTest.java
@@ -0,0 +1,49 @@
+package com.baeldung.fastexcel;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+
+import static org.junit.Assert.assertEquals;
+
+public class FastexcelIntegrationTest {
+
+ private FastexcelHelper fastexcelHelper;
+ private static String FILE_NAME = "fastexcel.xlsx";
+ private String fileLocation;
+
+ @Before
+ public void generateExcelFile() throws IOException {
+
+ File currDir = new File(".");
+ String path = currDir.getAbsolutePath();
+ fileLocation = path.substring(0, path.length() - 1) + FILE_NAME;
+
+ fastexcelHelper = new FastexcelHelper();
+ fastexcelHelper.writeExcel();
+ }
+
+ @Test
+ public void whenParsingExcelFile_thenCorrect() throws IOException {
+ Map> data = fastexcelHelper.readExcel(fileLocation);
+
+ assertEquals("Name", data.get(1).get(0));
+ assertEquals("Age", data.get(1).get(1));
+
+ assertEquals("John Smith", data.get(3).get(0));
+ assertEquals("20", data.get(3).get(1));
+ }
+
+ @After
+ public void cleanup() {
+ File testFile = new File(fileLocation);
+ if (testFile.exists()) {
+ testFile.delete();
+ }
+ }
+}
diff --git a/aws-modules/aws-s3/src/main/java/com/baeldung/s3/AWSS3ObjectUtils.java b/aws-modules/aws-s3/src/main/java/com/baeldung/s3/AWSS3ObjectUtils.java
new file mode 100644
index 0000000000..1c31218ff9
--- /dev/null
+++ b/aws-modules/aws-s3/src/main/java/com/baeldung/s3/AWSS3ObjectUtils.java
@@ -0,0 +1,42 @@
+package com.baeldung.s3;
+
+import org.apache.http.HttpStatus;
+
+import com.amazonaws.AmazonServiceException;
+import com.amazonaws.services.s3.AmazonS3;
+
+public class AWSS3ObjectUtils {
+
+ private AmazonS3 s3Client;
+
+ public AWSS3ObjectUtils(AmazonS3 s3client) {
+ this.s3Client = s3client;
+ }
+
+ public boolean doesObjectExistByDefaultMethod(String bucket, String key) {
+ return s3Client.doesObjectExist(bucket, key);
+ }
+
+ public boolean doesObjectExistByListObjects(String bucket, String key) {
+ return s3Client.listObjects(bucket)
+ .getObjectSummaries()
+ .stream()
+ .filter(s3ObjectSummary -> s3ObjectSummary.getKey()
+ .equals(key))
+ .findFirst()
+ .isPresent();
+ }
+
+ public boolean doesObjectExistByMetaData(String bucket, String key) {
+ try {
+ s3Client.getObjectMetadata(bucket, key);
+ return true;
+ } catch (AmazonServiceException e) {
+ if (e.getStatusCode() == HttpStatus.SC_NOT_FOUND) {
+ return false;
+ } else {
+ throw e;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/aws-modules/aws-s3/src/test/java/com/baeldung/s3/AWSS3ObjectIntegrationTest.java b/aws-modules/aws-s3/src/test/java/com/baeldung/s3/AWSS3ObjectIntegrationTest.java
new file mode 100644
index 0000000000..7fe9081fe3
--- /dev/null
+++ b/aws-modules/aws-s3/src/test/java/com/baeldung/s3/AWSS3ObjectIntegrationTest.java
@@ -0,0 +1,44 @@
+package com.baeldung.s3;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.amazonaws.auth.EnvironmentVariableCredentialsProvider;
+import com.amazonaws.regions.Regions;
+import com.amazonaws.services.s3.AmazonS3;
+import com.amazonaws.services.s3.AmazonS3ClientBuilder;
+
+public class AWSS3ObjectIntegrationTest {
+
+ private static final String BUCKET = "your-bucket";
+ private static final String KEY_THAT_EXIST = "your-key-that-exist";
+ private AWSS3ObjectUtils s3ObjectUtils;
+
+ @Before
+ public void setUp() {
+ AmazonS3 client = AmazonS3ClientBuilder.standard()
+ .withRegion(Regions.DEFAULT_REGION)
+ .withCredentials(new EnvironmentVariableCredentialsProvider())
+ .build();
+
+ s3ObjectUtils = new AWSS3ObjectUtils(client);
+ }
+
+ @Test
+ public void whenVerifyIfObjectExistByDefaultMethod_thenCorrect() {
+ assertTrue(s3ObjectUtils.doesObjectExistByDefaultMethod(BUCKET, KEY_THAT_EXIST), "Key: " + KEY_THAT_EXIST + " doesn't exist");
+
+ }
+
+ @Test
+ public void whenVerifyIfObjectExistByListObjects_thenCorrect() {
+ assertTrue(s3ObjectUtils.doesObjectExistByListObjects(BUCKET, KEY_THAT_EXIST), "Key: " + KEY_THAT_EXIST + " doesn't exist");
+ }
+
+ @Test
+ public void whenVerifyIfObjectExistByMetaData_thenCorrect() {
+ assertTrue(s3ObjectUtils.doesObjectExistByMetaData(BUCKET, KEY_THAT_EXIST), "Key: " + KEY_THAT_EXIST + " doesn't exist");
+ }
+}
diff --git a/core-java-modules/core-java-arrays-operations-basic/README.md b/core-java-modules/core-java-arrays-operations-basic/README.md
index eed64c0cae..76f4044355 100644
--- a/core-java-modules/core-java-arrays-operations-basic/README.md
+++ b/core-java-modules/core-java-arrays-operations-basic/README.md
@@ -12,3 +12,4 @@ This module contains articles about Java array fundamentals. They assume no prev
- [Extending an Array’s Length](https://www.baeldung.com/java-array-add-element-at-the-end)
- [Initializing a Boolean Array in Java](https://www.baeldung.com/java-initializing-boolean-array)
- [Find the Index of an Element in a Java Array](https://www.baeldung.com/java-array-find-index)
+- [Comparing Two Byte Arrays in Java](https://www.baeldung.com/java-comparing-byte-arrays)
diff --git a/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/Consumer.java b/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/Consumer.java
index 9bbcbb923c..933a1b5f52 100644
--- a/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/Consumer.java
+++ b/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/Consumer.java
@@ -1,6 +1,9 @@
package com.baeldung.producerconsumer;
+import java.util.logging.Logger;
+
public class Consumer implements Runnable {
+ private static final Logger log = Logger.getLogger(Consumer.class.getCanonicalName());
private final DataQueue dataQueue;
public Consumer(DataQueue dataQueue) {
@@ -14,7 +17,7 @@ public class Consumer implements Runnable {
public void consume() {
while (dataQueue.runFlag) {
- synchronized (this) {
+ synchronized (dataQueue) {
while (dataQueue.isEmpty() && dataQueue.runFlag) {
try {
dataQueue.waitOnEmpty();
@@ -31,12 +34,13 @@ public class Consumer implements Runnable {
useMessage(message);
}
}
- System.out.println("Consumer Stopped");
+ log.info("Consumer Stopped");
}
private void useMessage(Message message) {
if (message != null) {
- System.out.printf("[%s] Consuming Message. Id: %d, Data: %f\n", Thread.currentThread().getName(), message.getId(), message.getData());
+ log.info(String.format("[%s] Consuming Message. Id: %d, Data: %f%n",
+ Thread.currentThread().getName(), message.getId(), message.getData()));
//Sleeping on random time to make it realistic
ThreadUtil.sleep((long) (message.getData() * 100));
diff --git a/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/Producer.java b/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/Producer.java
index 04ad39f26e..ca89d0c866 100644
--- a/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/Producer.java
+++ b/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/Producer.java
@@ -1,6 +1,9 @@
package com.baeldung.producerconsumer;
+import java.util.logging.Logger;
+
public class Producer implements Runnable {
+ private static final Logger log = Logger.getLogger(Producer.class.getCanonicalName());
private final DataQueue dataQueue;
private static int idSequence = 0;
@@ -16,7 +19,7 @@ public class Producer implements Runnable {
public void produce() {
while (dataQueue.runFlag) {
- synchronized (this) {
+ synchronized (dataQueue) {
while (dataQueue.isFull() && dataQueue.runFlag) {
try {
dataQueue.waitOnFull();
@@ -33,12 +36,13 @@ public class Producer implements Runnable {
dataQueue.notifyAllForEmpty();
}
}
- System.out.println("Producer Stopped");
+ log.info("Producer Stopped");
}
private Message generateMessage() {
- Message message = new Message(++idSequence, Math.random());
- System.out.printf("[%s] Generated Message. Id: %d, Data: %f\n", Thread.currentThread().getName(), message.getId(), message.getData());
+ Message message = new Message(incrementAndGetId(), Math.random());
+ log.info(String.format("[%s] Generated Message. Id: %d, Data: %f%n",
+ Thread.currentThread().getName(), message.getId(), message.getData()));
//Sleeping on random time to make it realistic
ThreadUtil.sleep((long) (message.getData() * 100));
@@ -46,6 +50,10 @@ public class Producer implements Runnable {
return message;
}
+ private static int incrementAndGetId() {
+ return ++idSequence;
+ }
+
public void stop() {
dataQueue.runFlag = false;
dataQueue.notifyAllForFull();
diff --git a/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/SimpleProducerConsumerDemonstrator.java b/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/SimpleProducerConsumerDemonstrator.java
index f1f6e1cc9c..500dc9ca07 100644
--- a/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/SimpleProducerConsumerDemonstrator.java
+++ b/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/SimpleProducerConsumerDemonstrator.java
@@ -2,10 +2,12 @@ package com.baeldung.producerconsumer;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingDeque;
+import java.util.logging.Logger;
import static com.baeldung.producerconsumer.ThreadUtil.sleep;
public class SimpleProducerConsumerDemonstrator {
+ private static final Logger log = Logger.getLogger(SimpleProducerConsumerDemonstrator.class.getCanonicalName());
BlockingQueue blockingQueue = new LinkedBlockingDeque<>(5);
private void produce() {
@@ -17,7 +19,7 @@ public class SimpleProducerConsumerDemonstrator {
e.printStackTrace();
break;
}
- System.out.printf("[%s] Value produced: %f\n", Thread.currentThread().getName(), value);
+ log.info(String.format("[%s] Value produced: %f%n", Thread.currentThread().getName(), value));
}
}
@@ -31,7 +33,7 @@ public class SimpleProducerConsumerDemonstrator {
break;
}
// Consume value
- System.out.printf("[%s] Value consumed: %f\n", Thread.currentThread().getName(), value);
+ log.info(String.format("[%s] Value consumed: %f%n", Thread.currentThread().getName(), value));
}
}
diff --git a/core-java-modules/core-java-concurrency-basic-3/README.md b/core-java-modules/core-java-concurrency-basic-3/README.md
index 46480c6b01..da148599b0 100644
--- a/core-java-modules/core-java-concurrency-basic-3/README.md
+++ b/core-java-modules/core-java-concurrency-basic-3/README.md
@@ -6,4 +6,5 @@ This module contains articles about basic Java concurrency.
- [How to Handle InterruptedException in Java](https://www.baeldung.com/java-interrupted-exception)
- [Thread.sleep() vs Awaitility.await()](https://www.baeldung.com/java-thread-sleep-vs-awaitility-await)
+- [Is CompletableFuture Non-blocking?](https://www.baeldung.com/java-completablefuture-non-blocking)
- [[<-- Prev]](../core-java-concurrency-basic-2)
diff --git a/core-java-modules/core-java-concurrency-basic-3/src/test/java/com/baeldung/concurrent/RequestProcessorUnitTest.java b/core-java-modules/core-java-concurrency-basic-3/src/test/java/com/baeldung/concurrent/RequestProcessorUnitTest.java
index c437b08b34..4a400f7beb 100644
--- a/core-java-modules/core-java-concurrency-basic-3/src/test/java/com/baeldung/concurrent/RequestProcessorUnitTest.java
+++ b/core-java-modules/core-java-concurrency-basic-3/src/test/java/com/baeldung/concurrent/RequestProcessorUnitTest.java
@@ -20,7 +20,8 @@ public class RequestProcessorUnitTest {
void whenWaitingWithThreadSleep_thenStatusIsDone() throws InterruptedException {
String requestId = requestProcessor.processRequest();
- Thread.sleep(2000);
+ //The sleep value should be greater than the maximum time the request takes to complete
+ Thread.sleep(2010);
assertEquals("DONE", requestProcessor.getStatus(requestId));
}
@@ -31,7 +32,8 @@ public class RequestProcessorUnitTest {
String requestId = requestProcessor.processRequest();
Awaitility.await()
- .atMost(2, TimeUnit.SECONDS)
+ //The timeout value should exceed the maximum time the request takes to complete, for the time amount of a poll (500 ms)
+ .atMost(2501, TimeUnit.MILLISECONDS)
.pollDelay(500, TimeUnit.MILLISECONDS)
.until(() -> requestProcessor.getStatus(requestId), not(equalTo("PROCESSING")));
diff --git a/core-java-modules/core-java-concurrency-collections-2/src/test/java/com/baeldung/concurrent/queue/BlockingQueueUnitTest.java b/core-java-modules/core-java-concurrency-collections-2/src/test/java/com/baeldung/concurrent/queue/BlockingQueueUnitTest.java
new file mode 100644
index 0000000000..e913747f2d
--- /dev/null
+++ b/core-java-modules/core-java-concurrency-collections-2/src/test/java/com/baeldung/concurrent/queue/BlockingQueueUnitTest.java
@@ -0,0 +1,26 @@
+package com.baeldung.concurrent.queue;
+
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.LinkedBlockingQueue;
+
+import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+
+public class BlockingQueueUnitTest {
+
+ @Test
+ public void givenArrayBlockingQueue_whenAddedElements_thenReturnQueueRemainingCapacity() {
+ BlockingQueue arrayBlockingQueue = new ArrayBlockingQueue<>(10);
+ arrayBlockingQueue.add("TestString1");
+ arrayBlockingQueue.add("TestString2");
+ assertEquals(8, arrayBlockingQueue.remainingCapacity());
+ }
+
+ @Test
+ public void givenLinkedBlockingQueue_whenAddedElements_thenReturnQueueRemainingCapacity() {
+ BlockingQueue linkedBlockingQueue = new LinkedBlockingQueue<>(10);
+ linkedBlockingQueue.add("TestString1");
+ assertEquals(9, linkedBlockingQueue.remainingCapacity());
+ }
+}
\ No newline at end of file
diff --git a/core-java-modules/core-java-io-apis-2/README.md b/core-java-modules/core-java-io-apis-2/README.md
index 031ff3c7fc..1633dc4828 100644
--- a/core-java-modules/core-java-io-apis-2/README.md
+++ b/core-java-modules/core-java-io-apis-2/README.md
@@ -7,3 +7,4 @@ This module contains articles about core Java input/output(IO) APIs.
- [Java Scanner Taking a Character Input](https://www.baeldung.com/java-scanner-character-input)
- [Get the Desktop Path in Java](https://www.baeldung.com/java-desktop-path)
- [Integer.parseInt(scanner.nextLine()) and scanner.nextInt() in Java](https://www.baeldung.com/java-scanner-integer)
+- [Difference Between FileReader and BufferedReader in Java](https://www.baeldung.com/java-filereader-vs-bufferedreader)
diff --git a/core-java-modules/core-java-io-apis-2/pom.xml b/core-java-modules/core-java-io-apis-2/pom.xml
index 5ad5528bad..22c04cdc58 100644
--- a/core-java-modules/core-java-io-apis-2/pom.xml
+++ b/core-java-modules/core-java-io-apis-2/pom.xml
@@ -1,46 +1,115 @@
-
-
- 4.0.0
- core-java-io-apis-2
- core-java-io-apis-2
- jar
-
-
- com.baeldung.core-java-modules
- core-java-modules
- 0.0.1-SNAPSHOT
-
-
-
-
-
- log4j
- log4j
- ${log4j.version}
-
-
- org.slf4j
- log4j-over-slf4j
- ${org.slf4j.version}
-
-
- org.projectlombok
- lombok
- ${lombok.version}
- provided
-
-
-
-
- core-java-io-apis-2
-
-
- src/main/resources
- true
-
-
-
-
+
+
+ 4.0.0
+ core-java-io-apis-2
+ core-java-io-apis-2
+ jar
+
+
+ com.baeldung.core-java-modules
+ core-java-modules
+ 0.0.1-SNAPSHOT
+
+
+
+
+
+ log4j
+ log4j
+ ${log4j.version}
+
+
+ org.slf4j
+ log4j-over-slf4j
+ ${org.slf4j.version}
+
+
+ org.projectlombok
+ lombok
+ ${lombok.version}
+ provided
+
+
+ org.junit.jupiter
+ junit-jupiter-engine
+ 5.7.2
+ test
+
+
+ org.junit.jupiter
+ junit-jupiter
+
+
+ org.junit.jupiter
+ junit-jupiter
+
+
+ org.junit.jupiter
+ junit-jupiter
+
+
+ org.junit.jupiter
+ junit-jupiter
+
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+ ${junit-jupiter-version}
+ test
+
+
+
+ org.junit.jupiter
+ junit-jupiter-params
+ ${junit-jupiter-version}
+ test
+
+
+
+ org.junit.jupiter
+ junit-jupiter-engine
+ ${junit-jupiter-version}
+ test
+
+
+ org.junit.jupiter
+ junit-jupiter
+
+
+ org.junit.jupiter
+ junit-jupiter
+
+
+ org.junit.jupiter
+ junit-jupiter
+
+
+ org.testng
+ testng
+ 7.1.0
+ test
+
+
+ org.testng
+ testng
+ 7.5
+ compile
+
+
+
+ 5.2.0
+
+
+ core-java-io-apis-2
+
+
+ src/main/resources
+ true
+
+
+
+
\ No newline at end of file
diff --git a/core-java-modules/core-java-io-apis-2/src/main/java/com/baeldung/multinput/MultiInputs.java b/core-java-modules/core-java-io-apis-2/src/main/java/com/baeldung/multinput/MultiInputs.java
new file mode 100644
index 0000000000..df799b2511
--- /dev/null
+++ b/core-java-modules/core-java-io-apis-2/src/main/java/com/baeldung/multinput/MultiInputs.java
@@ -0,0 +1,36 @@
+package com.baeldung.multinput;
+
+import java.util.InputMismatchException;
+import java.util.Scanner;
+
+public class MultiInputs {
+ public void UsingSpaceDelimiter(){
+ Scanner scanner = new Scanner(System.in);
+ System.out.print("Enter two numbers: ");
+ int num1 = scanner.nextInt();
+ int num2 = scanner.nextInt();
+ System.out.println("You entered " + num1 + " and " + num2);
+
+ }
+ public void UsingREDelimiter(){
+ Scanner scanner = new Scanner(System.in);
+ scanner.useDelimiter("[\\s,]+");
+ System.out.print("Enter two numbers separated by a space or a comma: ");
+ int num1 = scanner.nextInt();
+ int num2 = scanner.nextInt();
+ System.out.println("You entered " + num1 + " and " + num2);
+
+ }
+ public void UsingCustomDelimiter(){
+ Scanner scanner = new Scanner(System.in);
+ scanner.useDelimiter(";");
+ System.out.print("Enter two numbers separated by a semicolon: ");
+ try { int num1 = scanner.nextInt();
+ int num2 = scanner.nextInt();
+ System.out.println("You entered " + num1 + " and " + num2); }
+ catch (InputMismatchException e)
+ { System.out.println("Invalid input. Please enter two integers separated by a semicolon."); }
+
+ }
+}
+
diff --git a/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/absolutetorelative/AbsoluteToRelativeUnitTest.java b/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/absolutetorelative/AbsoluteToRelativeUnitTest.java
index 0830b0808a..9b3f424a30 100644
--- a/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/absolutetorelative/AbsoluteToRelativeUnitTest.java
+++ b/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/absolutetorelative/AbsoluteToRelativeUnitTest.java
@@ -1,93 +1,92 @@
-package com.baeldung.absolutetorelative;
-
-import org.assertj.core.api.Assertions;
-import org.junit.jupiter.api.Test;
-
-import java.net.URI;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
-public class AbsoluteToRelativeUnitTest {
-
- // given - until using Paths, no need to create physical files
- private final Path pathOne = Paths.get("/baeldung/bar/one.txt");
- private final Path pathTwo = Paths.get("/baeldung/bar/two.txt");
- private final Path pathThree = Paths.get("/baeldung/foo/three.txt");
-
- private final URI uriOne = pathOne.toUri();
- private final URI uriTwo = pathTwo.toUri();
- private final URI uriThree = pathThree.toUri();
-
- @Test
- public void givenAbsolutePaths_whenRelativizePathOneToPathTwo_thenRelativeIsReturned() {
- Path result = pathOne.relativize(pathTwo);
-
- Assertions.assertThat(result)
- .isRelative()
- .isEqualTo(Paths.get("../two.txt"));
- }
-
- @Test
- public void givenAbsolutePaths_whenRelativizePathTwoToPathOne_thenRelativeIsReturned() {
- Path result = pathTwo.relativize(pathOne);
-
- Assertions.assertThat(result)
- .isRelative()
- .isEqualTo(Paths.get("../one.txt"));
- }
-
- @Test
- public void givenAbsolutePaths_whenRelativizePathOneParentToPathTwo_thenRelativeIsReturned() {
- Path result = pathOne.getParent().relativize(pathTwo);
-
- Assertions.assertThat(result)
- .isRelative()
- .isEqualTo(Paths.get("two.txt"));
- }
-
- @Test
- public void givenAbsolutePaths_whenRelativizePathOneToPathThree_thenRelativeIsReturned() {
- Path result = pathOne.relativize(pathThree);
-
- Assertions.assertThat(result)
- .isRelative()
- .isEqualTo(Paths.get("../../foo/three.txt"));
- }
-
- @Test
- public void givenAbsolutePaths_whenRelativizePathThreeToPathOne_thenRelativeIsReturned() {
- Path result = pathThree.relativize(pathOne);
-
- Assertions.assertThat(result)
- .isRelative()
- .isEqualTo(Paths.get("../../bar/one.txt"));
- }
-
- @Test
- public void givenAbsoluteURIs_whenRelativizeUriOneToUriTwo_thenAbsoluteIsReturned() {
- URI result = uriOne.relativize(uriTwo);
-
- Assertions.assertThat(result)
- .asString()
- .contains("/baeldung/bar/two.txt");
- }
-
- @Test
- public void givenAbsoluteURIs_whenRelativizeUriOneParentToUriTwo_thenRelativeIsReturned() {
- URI result = pathOne.getParent().toUri().relativize(uriTwo);
-
- Assertions.assertThat(result)
- .asString()
- .contains("two.txt");
- }
-
- @Test
- public void givenAbsoluteURIs_whenRelativizeUriOneParentToUriThree_thenAbsoluteIsReturned() {
- URI result = pathOne.getParent().toUri().relativize(uriThree);
-
- Assertions.assertThat(result)
- .asString()
- .contains("/baeldung/foo/three.txt");
- }
-
-}
+package com.baeldung.absolutetorelative;
+
+import java.net.URI;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+public class AbsoluteToRelativeUnitTest {
+
+ // given - until using Paths, no need to create physical files
+ private final Path pathOne = Paths.get("/baeldung/bar/one.txt");
+ private final Path pathTwo = Paths.get("/baeldung/bar/two.txt");
+ private final Path pathThree = Paths.get("/baeldung/foo/three.txt");
+
+ private final URI uriOne = pathOne.toUri();
+ private final URI uriTwo = pathTwo.toUri();
+ private final URI uriThree = pathThree.toUri();
+
+ @Test
+ public void givenAbsolutePaths_whenRelativizePathOneToPathTwo_thenRelativeIsReturned() {
+ Path result = pathOne.relativize(pathTwo);
+
+ org.assertj.core.api.Assertions.assertThat(result)
+ .isRelative()
+ .isEqualTo(Paths.get("../two.txt"));
+ }
+
+ @Test
+ public void givenAbsolutePaths_whenRelativizePathTwoToPathOne_thenRelativeIsReturned() {
+ Path result = pathTwo.relativize(pathOne);
+
+ org.assertj.core.api.Assertions.assertThat(result)
+ .isRelative()
+ .isEqualTo(Paths.get("../one.txt"));
+ }
+
+ @Test
+ public void givenAbsolutePaths_whenRelativizePathOneParentToPathTwo_thenRelativeIsReturned() {
+ Path result = pathOne.getParent().relativize(pathTwo);
+
+ org.assertj.core.api.Assertions.assertThat(result)
+ .isRelative()
+ .isEqualTo(Paths.get("two.txt"));
+ }
+
+ @Test
+ public void givenAbsolutePaths_whenRelativizePathOneToPathThree_thenRelativeIsReturned() {
+ Path result = pathOne.relativize(pathThree);
+
+ org.assertj.core.api.Assertions.assertThat(result)
+ .isRelative()
+ .isEqualTo(Paths.get("../../foo/three.txt"));
+ }
+
+ @Test
+ public void givenAbsolutePaths_whenRelativizePathThreeToPathOne_thenRelativeIsReturned() {
+ Path result = pathThree.relativize(pathOne);
+
+ org.assertj.core.api.Assertions.assertThat(result)
+ .isRelative()
+ .isEqualTo(Paths.get("../../bar/one.txt"));
+ }
+
+ @Test
+ public void givenAbsoluteURIs_whenRelativizeUriOneToUriTwo_thenAbsoluteIsReturned() {
+ URI result = uriOne.relativize(uriTwo);
+
+ org.assertj.core.api.Assertions.assertThat(result)
+ .asString()
+ .contains("/baeldung/bar/two.txt");
+ }
+
+ @Test
+ public void givenAbsoluteURIs_whenRelativizeUriOneParentToUriTwo_thenRelativeIsReturned() {
+ URI result = pathOne.getParent().toUri().relativize(uriTwo);
+
+ org.assertj.core.api.Assertions.assertThat(result)
+ .asString()
+ .contains("two.txt");
+ }
+
+ @Test
+ public void givenAbsoluteURIs_whenRelativizeUriOneParentToUriThree_thenAbsoluteIsReturned() {
+ URI result = pathOne.getParent().toUri().relativize(uriThree);
+
+ org.assertj.core.api.Assertions.assertThat(result)
+ .asString()
+ .contains("/baeldung/foo/three.txt");
+ }
+
+}
diff --git a/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/bufferedreadervsfilereader/BufferedReaderUnitTest.java b/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/bufferedreadervsfilereader/BufferedReaderUnitTest.java
index a2aeca56ad..06b7d38821 100644
--- a/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/bufferedreadervsfilereader/BufferedReaderUnitTest.java
+++ b/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/bufferedreadervsfilereader/BufferedReaderUnitTest.java
@@ -1,31 +1,31 @@
-package com.baeldung.bufferedreadervsfilereader;
-
-import org.junit.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-import java.io.BufferedReader;
-import java.io.FileReader;
-import java.io.IOException;
-
-public class BufferedReaderUnitTest {
-
- @Test
- public void whenReadingAFile_thenReadsLineByLine() {
- StringBuilder result = new StringBuilder();
-
- try (BufferedReader br = new BufferedReader(new FileReader("src/test/resources/sampleText1.txt"))) {
- String line;
-
- while((line = br.readLine()) != null) {
- result.append(line);
- result.append('\n');
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- assertEquals("first line\nsecond line\nthird line\n", result.toString());
- }
-
-}
+package com.baeldung.bufferedreadervsfilereader;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.IOException;
+
+import org.junit.jupiter.api.Assertions;
+import org.testng.annotations.Test;
+public class BufferedReaderUnitTest {
+
+ @Test
+ public void whenReadingAFile_thenReadsLineByLine() {
+ StringBuilder result = new StringBuilder();
+
+ try (BufferedReader br = new BufferedReader(new FileReader("src/test/resources/sampleText1.txt"))) {
+ String line;
+
+ while((line = br.readLine()) != null) {
+ result.append(line);
+ result.append('\n');
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ assertEquals("first line\nsecond line\nthird line\n", result.toString());
+ }
+
+}
diff --git a/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/bufferedreadervsfilereader/FileReaderUnitTest.java b/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/bufferedreadervsfilereader/FileReaderUnitTest.java
index f046f313d4..5df870e7b5 100644
--- a/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/bufferedreadervsfilereader/FileReaderUnitTest.java
+++ b/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/bufferedreadervsfilereader/FileReaderUnitTest.java
@@ -1,30 +1,30 @@
-package com.baeldung.bufferedreadervsfilereader;
-
-import org.junit.jupiter.api.Test;
-
-import java.io.FileReader;
-import java.io.IOException;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class FileReaderUnitTest {
-
- @Test
- public void whenReadingAFile_thenReadsCharByChar() {
- StringBuilder result = new StringBuilder();
-
- try (FileReader fr = new FileReader("src/test/resources/sampleText2.txt")) {
- int i = fr.read();
-
- while(i != -1) {
- result.append((char)i);
-
- i = fr.read();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- assertEquals("qwerty", result.toString());
- }
-}
+package com.baeldung.bufferedreadervsfilereader;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.io.FileReader;
+import java.io.IOException;
+
+import org.junit.jupiter.api.Test;
+
+public class FileReaderUnitTest {
+
+ @Test
+ public void whenReadingAFile_thenReadsCharByChar() {
+ StringBuilder result = new StringBuilder();
+
+ try (FileReader fr = new FileReader("src/test/resources/sampleText2.txt")) {
+ int i = fr.read();
+
+ while(i != -1) {
+ result.append((char)i);
+
+ i = fr.read();
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ assertEquals("qwerty", result.toString());
+ }
+}
diff --git a/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/multinput/TestMultipleInputsUnitTest.java b/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/multinput/TestMultipleInputsUnitTest.java
new file mode 100644
index 0000000000..317d9e817e
--- /dev/null
+++ b/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/multinput/TestMultipleInputsUnitTest.java
@@ -0,0 +1,47 @@
+package com.baeldung.multinput;
+ import java.io.ByteArrayInputStream;
+ import java.io.InputStream;
+ import java.util.InputMismatchException;
+ import org.junit.jupiter.api.Assertions;
+ import org.testng.annotations.Test;
+import com.baeldung.multinput.MultiInputs;
+public class TestMultipleInputsUnitTest {
+ @Test
+ public void givenMultipleInputs_whenUsingSpaceDelimiter_thenExpectPrintingOutputs() {
+ String input = "10 20\n";
+ InputStream in = new ByteArrayInputStream(input.getBytes());
+ System.setIn(in);
+ MultiInputs mi = new MultiInputs();
+ mi.UsingSpaceDelimiter();
+ // You can add assertions here to verify the behavior of the method
+ }
+
+ @Test
+ public void givenMultipleInputs_whenUsingREDelimiter_thenExpectPrintingOutputs() {
+ String input = "30, 40\n";
+ InputStream in = new ByteArrayInputStream(input.getBytes());
+ System.setIn(in);
+ MultiInputs mi = new MultiInputs();
+ mi.UsingREDelimiter();
+ // You can add assertions here to verify the behavior of the method
+ }
+
+ @Test
+ public void givenMultipleInputs_whenUsingCustomDelimiter_thenExpectPrintingOutputs() {
+ String input = "50; 60\n";
+ InputStream in = new ByteArrayInputStream(input.getBytes());
+ System.setIn(in);
+ MultiInputs mi = new MultiInputs();
+ mi.UsingCustomDelimiter();
+ // You can add assertions here to verify the behavior of the method
+ }
+
+ @Test
+ public void givenInvalidInput_whenUsingSpaceDelimiter_thenExpectInputMismatchException() {
+ String input = "abc\n";
+ InputStream in = new ByteArrayInputStream(input.getBytes());
+ System.setIn(in);
+ MultiInputs mi = new MultiInputs();
+ Assertions.assertThrows(InputMismatchException.class, mi::UsingSpaceDelimiter);
+ }
+}
diff --git a/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/path/DesktopPathUnitTest.java b/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/path/DesktopPathUnitTest.java
index fe21d0a72f..1b71512c5c 100644
--- a/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/path/DesktopPathUnitTest.java
+++ b/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/path/DesktopPathUnitTest.java
@@ -1,29 +1,27 @@
-package com.baeldung.path;
-
-import org.junit.jupiter.api.Test;
-
-import java.io.File;
-
-import static org.junit.Assert.assertEquals;
-
-import javax.swing.filechooser.FileSystemView;
-
-public class DesktopPathUnitTest {
- // Adapt DESKTOP_PATH variable to your own system path
- // private static final String DESKTOP_PATH = "C:\\Users\\HRAF\\Desktop";
-
- @Test
- public void whenUsingGetUserHomeProperty_thenShouldEqualDesktopPath() {
- String desktopPath = System.getProperty("user.home") + File.separator + "Desktop";
- // assertEquals(DESKTOP_PATH, desktopPath);
- }
-
- @Test
- public void whenUsingFileSystemViewGetHomeDirectory_thenShouldEqualDesktopPath() {
- FileSystemView view = FileSystemView.getFileSystemView();
- File file = view.getHomeDirectory();
- String path = file.getPath();
- // assertEquals(DESKTOP_PATH, path);
- }
-
-}
+package com.baeldung.path;
+
+import java.io.File;
+
+import javax.swing.filechooser.FileSystemView;
+
+import org.junit.jupiter.api.Test;
+
+public class DesktopPathUnitTest {
+ // Adapt DESKTOP_PATH variable to your own system path
+ // private static final String DESKTOP_PATH = "C:\\Users\\HRAF\\Desktop";
+
+ @Test
+ public void whenUsingGetUserHomeProperty_thenShouldEqualDesktopPath() {
+ String desktopPath = System.getProperty("user.home") + File.separator + "Desktop";
+ // assertEquals(DESKTOP_PATH, desktopPath);
+ }
+
+ @Test
+ public void whenUsingFileSystemViewGetHomeDirectory_thenShouldEqualDesktopPath() {
+ FileSystemView view = FileSystemView.getFileSystemView();
+ File file = view.getHomeDirectory();
+ String path = file.getPath();
+ // assertEquals(DESKTOP_PATH, path);
+ }
+
+}
diff --git a/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/scanner/NextLineVsNextIntUnitTest.java b/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/scanner/NextLineVsNextIntUnitTest.java
index 8fab7c62e9..3aae0469d0 100644
--- a/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/scanner/NextLineVsNextIntUnitTest.java
+++ b/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/scanner/NextLineVsNextIntUnitTest.java
@@ -1,85 +1,85 @@
-package com.baeldung.scanner;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-
-import java.util.InputMismatchException;
-import java.util.Scanner;
-
-import org.junit.jupiter.api.Test;
-
-public class NextLineVsNextIntUnitTest {
-
- @Test
- void whenInputLineIsNumber_thenNextLineAndNextIntBothWork() {
- String input = "42\n";
-
- //nextLine()
- Scanner sc1 = new Scanner(input);
- int num1 = Integer.parseInt(sc1.nextLine());
- assertEquals(42, num1);
-
- //nextInt()
- Scanner sc2 = new Scanner(input);
- int num2 = sc2.nextInt();
- assertEquals(42, num2);
-
- }
-
- @Test
- void whenInputIsNotValidNumber_thenNextLineAndNextIntThrowDifferentException() {
- String input = "Nan\n";
-
- //nextLine() -> NumberFormatException
- Scanner sc1 = new Scanner(input);
- assertThrows(NumberFormatException.class, () -> Integer.parseInt(sc1.nextLine()));
-
- //nextInt() -> InputMismatchException
- Scanner sc2 = new Scanner(input);
- assertThrows(InputMismatchException.class, sc2::nextInt);
- }
-
- @Test
- void whenUsingNextInt_thenTheNextTokenAfterItFailsToParseIsNotConsumed() {
- String input = "42 is a magic number\n";
-
- //nextInt() to read '42'
- Scanner sc2 = new Scanner(input);
- int num2 = sc2.nextInt();
- assertEquals(42, num2);
-
- // call nextInt() again on "is"
- assertThrows(InputMismatchException.class, sc2::nextInt);
-
- String theNextToken = sc2.next();
- assertEquals("is", theNextToken);
-
- theNextToken = sc2.next();
- assertEquals("a", theNextToken);
- }
-
- @Test
- void whenReadingTwoInputLines_thenNextLineAndNextIntBehaveDifferently() {
-
- String input = new StringBuilder().append("42\n")
- .append("It is a magic number.\n")
- .toString();
-
- //nextLine()
- Scanner sc1 = new Scanner(input);
- int num1 = Integer.parseInt(sc1.nextLine());
- String nextLineText1 = sc1.nextLine();
- assertEquals(42, num1);
- assertEquals("It is a magic number.", nextLineText1);
-
- //nextInt()
- Scanner sc2 = new Scanner(input);
- int num2 = sc2.nextInt();
- assertEquals(42, num2);
-
- // nextInt() leaves the newline character (\n) behind
- String nextLineText2 = sc2.nextLine();
- assertEquals("", nextLineText2);
- }
-
+package com.baeldung.scanner;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+import java.util.InputMismatchException;
+import java.util.Scanner;
+
+import org.junit.jupiter.api.Test;
+
+public class NextLineVsNextIntUnitTest {
+
+ @Test
+ void whenInputLineIsNumber_thenNextLineAndNextIntBothWork() {
+ String input = "42\n";
+
+ //nextLine()
+ Scanner sc1 = new Scanner(input);
+ int num1 = Integer.parseInt(sc1.nextLine());
+ assertEquals(42, num1);
+
+ //nextInt()
+ Scanner sc2 = new Scanner(input);
+ int num2 = sc2.nextInt();
+ assertEquals(42, num2);
+
+ }
+
+ @Test
+ void whenInputIsNotValidNumber_thenNextLineAndNextIntThrowDifferentException() {
+ String input = "Nan\n";
+
+ //nextLine() -> NumberFormatException
+ Scanner sc1 = new Scanner(input);
+ assertThrows(NumberFormatException.class, () -> Integer.parseInt(sc1.nextLine()));
+
+ //nextInt() -> InputMismatchException
+ Scanner sc2 = new Scanner(input);
+ assertThrows(InputMismatchException.class, sc2::nextInt);
+ }
+
+ @Test
+ void whenUsingNextInt_thenTheNextTokenAfterItFailsToParseIsNotConsumed() {
+ String input = "42 is a magic number\n";
+
+ //nextInt() to read '42'
+ Scanner sc2 = new Scanner(input);
+ int num2 = sc2.nextInt();
+ assertEquals(42, num2);
+
+ // call nextInt() again on "is"
+ assertThrows(InputMismatchException.class, sc2::nextInt);
+
+ String theNextToken = sc2.next();
+ assertEquals("is", theNextToken);
+
+ theNextToken = sc2.next();
+ assertEquals("a", theNextToken);
+ }
+
+ @Test
+ void whenReadingTwoInputLines_thenNextLineAndNextIntBehaveDifferently() {
+
+ String input = new StringBuilder().append("42\n")
+ .append("It is a magic number.\n")
+ .toString();
+
+ //nextLine()
+ Scanner sc1 = new Scanner(input);
+ int num1 = Integer.parseInt(sc1.nextLine());
+ String nextLineText1 = sc1.nextLine();
+ assertEquals(42, num1);
+ assertEquals("It is a magic number.", nextLineText1);
+
+ //nextInt()
+ Scanner sc2 = new Scanner(input);
+ int num2 = sc2.nextInt();
+ assertEquals(42, num2);
+
+ // nextInt() leaves the newline character (\n) behind
+ String nextLineText2 = sc2.nextLine();
+ assertEquals("", nextLineText2);
+ }
+
}
\ No newline at end of file
diff --git a/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/scanner/ScanACharacterUnitTest.java b/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/scanner/ScanACharacterUnitTest.java
index 1a70c6e3af..340b58bbf6 100644
--- a/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/scanner/ScanACharacterUnitTest.java
+++ b/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/scanner/ScanACharacterUnitTest.java
@@ -1,38 +1,38 @@
-package com.baeldung.scanner;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-import java.util.Scanner;
-
-import org.junit.jupiter.api.Test;
-
-public class ScanACharacterUnitTest {
-
- // given - input scanner source, no need to scan from console
- String input = new StringBuilder().append("abc\n")
- .append("mno\n")
- .append("xyz\n")
- .toString();
-
- @Test
- public void givenInputSource_whenScanCharUsingNext_thenOneCharIsRead() {
- Scanner sc = new Scanner(input);
- char c = sc.next().charAt(0);
- assertEquals('a', c);
- }
-
- @Test
- public void givenInputSource_whenScanCharUsingFindInLine_thenOneCharIsRead() {
- Scanner sc = new Scanner(input);
- char c = sc.findInLine(".").charAt(0);
- assertEquals('a', c);
- }
-
- @Test
- public void givenInputSource_whenScanCharUsingUseDelimiter_thenOneCharIsRead() {
- Scanner sc = new Scanner(input);
- char c = sc.useDelimiter("").next().charAt(0);
- assertEquals('a', c);
- }
-
-}
+package com.baeldung.scanner;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.util.Scanner;
+
+import org.junit.jupiter.api.Test;
+
+public class ScanACharacterUnitTest {
+
+ // given - input scanner source, no need to scan from console
+ String input = new StringBuilder().append("abc\n")
+ .append("mno\n")
+ .append("xyz\n")
+ .toString();
+
+ @Test
+ public void givenInputSource_whenScanCharUsingNext_thenOneCharIsRead() {
+ Scanner sc = new Scanner(input);
+ char c = sc.next().charAt(0);
+ assertEquals('a', c);
+ }
+
+ @Test
+ public void givenInputSource_whenScanCharUsingFindInLine_thenOneCharIsRead() {
+ Scanner sc = new Scanner(input);
+ char c = sc.findInLine(".").charAt(0);
+ assertEquals('a', c);
+ }
+
+ @Test
+ public void givenInputSource_whenScanCharUsingUseDelimiter_thenOneCharIsRead() {
+ Scanner sc = new Scanner(input);
+ char c = sc.useDelimiter("").next().charAt(0);
+ assertEquals('a', c);
+ }
+
+}
diff --git a/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/scanner/ScannerToArrayUnitTest.java b/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/scanner/ScannerToArrayUnitTest.java
new file mode 100644
index 0000000000..f64bd7b1fc
--- /dev/null
+++ b/core-java-modules/core-java-io-apis-2/src/test/java/com/baeldung/scanner/ScannerToArrayUnitTest.java
@@ -0,0 +1,107 @@
+package com.baeldung.scanner;
+
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Scanner;
+
+import org.junit.jupiter.api.Test;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.ObjectArrays;
+
+public class ScannerToArrayUnitTest {
+
+ @Test
+ void whenMultipleElementsInOneLine_thenGetExpectedArray() {
+ String input = "Java Kotlin Ruby Python Go\n";
+ String[] expected = new String[] { "Java", "Kotlin", "Ruby", "Python", "Go" };
+
+ // scanner.next()
+ Scanner scanner1 = new Scanner(input);
+ String[] result1 = new String[5];
+ int i = 0;
+ while (i < result1.length) {
+ result1[i] = scanner1.next();
+ i++;
+ }
+ assertArrayEquals(expected, result1);
+
+ //split()
+ Scanner scanner2 = new Scanner(input);
+ String[] result2 = scanner2.nextLine()
+ .split("\\s+");
+ assertArrayEquals(expected, result2);
+ }
+
+ @Test
+ void whenOneElementPerLine_thenGetExpectedArray() {
+ String input = new StringBuilder().append("Baeldung Java\n")
+ .append("Baeldung Kotlin\n")
+ .append("Baeldung Linux\n")
+ .toString();
+
+ String[] expected = new String[] { "Baeldung Java", "Baeldung Kotlin", "Baeldung Linux" };
+
+ String[] result = new String[3];
+ Scanner scanner = new Scanner(input);
+ int i = 0;
+ while (i < result.length) {
+ result[i] = scanner.nextLine();
+ i++;
+ }
+ assertArrayEquals(expected, result);
+ }
+
+ @Test
+ void whenOneElementPerLine_thenGetExpectedList() {
+ String input = new StringBuilder().append("Baeldung Java\n")
+ .append("Baeldung Kotlin\n")
+ .append("Baeldung Linux\n")
+ .toString();
+
+ List expected = Lists.newArrayList("Baeldung Java", "Baeldung Kotlin", "Baeldung Linux");
+
+ List result = new ArrayList<>();
+ Scanner scanner = new Scanner(input);
+ while (scanner.hasNextLine()) {
+ result.add(scanner.nextLine());
+ }
+ assertEquals(expected, result);
+ }
+
+ @Test
+ void whenEveryTokenIsAnElement_thenGetExpectedList() {
+ String input = new StringBuilder().append("Linux Windows MacOS\n")
+ .append("Java Kotlin Python Go\n")
+ .toString();
+
+ List expected = Lists.newArrayList("Linux", "Windows", "MacOS", "Java", "Kotlin", "Python", "Go");
+ List result = new ArrayList<>();
+ Scanner scanner = new Scanner(input);
+ while (scanner.hasNext()) {
+ result.add(scanner.next());
+ }
+ assertEquals(expected, result);
+ }
+
+ @Test
+ void whenEveryTokenIsAnElement_thenGetExpectedArray() {
+ String input = new StringBuilder().append("Linux Windows MacOS\n")
+ .append("Java Kotlin Python Go\n")
+ .toString();
+
+ String[] expected = new String[] { "Linux", "Windows", "MacOS", "Java", "Kotlin", "Python", "Go" };
+ String[] result = new String[] {};
+
+ Scanner scanner = new Scanner(input);
+ while (scanner.hasNextLine()) {
+ String[] lineInArray = scanner.nextLine()
+ .split("\\s+");
+ result = ObjectArrays.concat(result, lineInArray, String.class);
+ }
+ assertArrayEquals(expected, result);
+ }
+}
\ No newline at end of file
diff --git a/core-java-modules/core-java-io-apis-2/src/test/resources/sampleText1.txt b/core-java-modules/core-java-io-apis-2/src/test/resources/sampleText1.txt
index 20aeba2bad..ea0584cfe0 100644
--- a/core-java-modules/core-java-io-apis-2/src/test/resources/sampleText1.txt
+++ b/core-java-modules/core-java-io-apis-2/src/test/resources/sampleText1.txt
@@ -1,3 +1,3 @@
-first line
-second line
-third line
+first line
+second line
+third line
diff --git a/core-java-modules/core-java-io-conversions-2/src/test/java/com/baeldung/outputstreamtoinputstream/ConvertOutputStreamToInputStreamUnitTest.java b/core-java-modules/core-java-io-conversions-2/src/test/java/com/baeldung/outputstreamtoinputstream/ConvertOutputStreamToInputStreamUnitTest.java
new file mode 100644
index 0000000000..53e9da6dbb
--- /dev/null
+++ b/core-java-modules/core-java-io-conversions-2/src/test/java/com/baeldung/outputstreamtoinputstream/ConvertOutputStreamToInputStreamUnitTest.java
@@ -0,0 +1,53 @@
+package com.baeldung.outputstreamtoinputstream;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.PipedInputStream;
+import java.io.PipedOutputStream;
+
+import org.junit.jupiter.api.Test;
+
+public class ConvertOutputStreamToInputStreamUnitTest {
+
+ @Test
+ void whenUsingByteArray_thenGetExpectedInputStream() throws IOException {
+ String content = "I'm an important message.";
+ try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
+ out.write(content.getBytes());
+ try (ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray())) {
+ String inContent = new String(in.readAllBytes());
+
+ assertEquals(content, inContent);
+ }
+ }
+ }
+
+ @Test
+ void whenUsingPipeStream_thenGetExpectedInputStream() throws IOException {
+ String content = "I'm going through the pipe.";
+
+ ByteArrayOutputStream originOut = new ByteArrayOutputStream();
+ originOut.write(content.getBytes());
+
+ //connect the pipe
+ PipedInputStream in = new PipedInputStream();
+ PipedOutputStream out = new PipedOutputStream(in);
+
+ try (in) {
+ new Thread(() -> {
+ try (out) {
+ originOut.writeTo(out);
+ } catch (IOException iox) {
+ // handle IOExceptions
+ }
+ }).start();
+
+ String inContent = new String(in.readAllBytes());
+ assertEquals(content, inContent);
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/core-java-modules/core-java-lang-oop-modifiers/pom.xml b/core-java-modules/core-java-lang-oop-modifiers/pom.xml
index c193073a0e..459aa21721 100644
--- a/core-java-modules/core-java-lang-oop-modifiers/pom.xml
+++ b/core-java-modules/core-java-lang-oop-modifiers/pom.xml
@@ -23,7 +23,7 @@
- 1.4.197
+ 2.1.214
\ No newline at end of file
diff --git a/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/interfacesingleimpl/Animal.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/interfacesingleimpl/Animal.java
new file mode 100644
index 0000000000..b20c01cac9
--- /dev/null
+++ b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/interfacesingleimpl/Animal.java
@@ -0,0 +1,5 @@
+package com.baeldung.interfacesingleimpl;
+
+public interface Animal {
+ String makeSound();
+}
diff --git a/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/interfacesingleimpl/AnimalCare.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/interfacesingleimpl/AnimalCare.java
new file mode 100644
index 0000000000..0d7b732056
--- /dev/null
+++ b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/interfacesingleimpl/AnimalCare.java
@@ -0,0 +1,13 @@
+package com.baeldung.interfacesingleimpl;
+
+public class AnimalCare {
+ private Animal animal;
+
+ public AnimalCare(Animal animal) {
+ this.animal = animal;
+ }
+
+ public String animalSound() {
+ return animal.makeSound();
+ }
+}
diff --git a/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/interfacesingleimpl/Cat.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/interfacesingleimpl/Cat.java
new file mode 100644
index 0000000000..7540e0823b
--- /dev/null
+++ b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/interfacesingleimpl/Cat.java
@@ -0,0 +1,21 @@
+package com.baeldung.interfacesingleimpl;
+
+public class Cat {
+ private String name;
+
+ public Cat(String name) {
+ this.name = name;
+ }
+
+ public String makeSound() {
+ return "Meow! My name is " + name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/interfacesingleimpl/Dog.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/interfacesingleimpl/Dog.java
new file mode 100644
index 0000000000..1dfd3bea0d
--- /dev/null
+++ b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/interfacesingleimpl/Dog.java
@@ -0,0 +1,22 @@
+package com.baeldung.interfacesingleimpl;
+
+public class Dog implements Animal {
+ private String name;
+
+ public Dog(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String makeSound() {
+ return "Woof! My name is " + name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/interfacesingleimpl/InterfaceSingleImplUnitTest.java b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/interfacesingleimpl/InterfaceSingleImplUnitTest.java
new file mode 100644
index 0000000000..4044a554a3
--- /dev/null
+++ b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/interfacesingleimpl/InterfaceSingleImplUnitTest.java
@@ -0,0 +1,51 @@
+package com.baeldung.interfacesingleimpl;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.Test;
+
+public class InterfaceSingleImplUnitTest {
+ @Test
+ public void whenUsingMockAnimal_thenAnimalSoundIsCorrect() {
+ MockAnimal mockAnimal = new MockAnimal();
+ String expected = "Mock animal sound!";
+ AnimalCare animalCare = new AnimalCare(mockAnimal);
+ assertThat(animalCare.animalSound()).isEqualTo(expected);
+ }
+
+ @Test
+ public void whenCreatingDog_thenDogMakesWoofSound() {
+ Dog dog = new Dog("Buddy");
+ String expected = "Woof! My name is Buddy";
+ assertThat(dog.makeSound()).isEqualTo(expected);
+ }
+
+ @Test
+ public void whenCreatingCat_thenCatMakesMeowSound() {
+ Cat cat = new Cat("FuzzBall");
+ String expected = "Meow! My name is FuzzBall";
+ assertThat(cat.makeSound()).isEqualTo(expected);
+ }
+
+ @Test
+ public void whenCreatingAnimalCareWithDog_thenDogMakesWoofSound() {
+ Animal dog = new Dog("Ham");
+ AnimalCare animalCare = new AnimalCare(dog);
+ String expected = "Woof! My name is Ham";
+ assertThat(animalCare.animalSound()).isEqualTo(expected);
+ }
+
+ @Test
+ public void whenCreatingCatCareWithCat_thenCatMakesMeowSound() {
+ Cat cat = new Cat("Grumpy");
+ String expected = "Meow! My name is Grumpy";
+ assertThat(cat.makeSound()).isEqualTo(expected);
+ }
+
+ @Test
+ public void whenCreatingMockAnimal_thenMockAnimalMakesMockAnimalSound() {
+ MockAnimal mockAnimal = new MockAnimal();
+ String expected = "Mock animal sound!";
+ assertThat(mockAnimal.makeSound()).isEqualTo(expected);
+ }
+}
diff --git a/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/interfacesingleimpl/MockAnimal.java b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/interfacesingleimpl/MockAnimal.java
new file mode 100644
index 0000000000..1d3b264f45
--- /dev/null
+++ b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/interfacesingleimpl/MockAnimal.java
@@ -0,0 +1,8 @@
+package com.baeldung.interfacesingleimpl;
+
+public class MockAnimal implements Animal {
+ @Override
+ public String makeSound() {
+ return "Mock animal sound!";
+ }
+}
diff --git a/core-java-modules/core-java-records/README.md b/core-java-modules/core-java-records/README.md
new file mode 100644
index 0000000000..2e7ad00cd3
--- /dev/null
+++ b/core-java-modules/core-java-records/README.md
@@ -0,0 +1,2 @@
+## Relevant Articles
+- [Overridding hashCode() And equals() For Records](https://www.baeldung.com/java-override-hashcode-equals-records)
diff --git a/core-java-modules/core-java-regex-2/src/test/java/com/baeldung/regex/z_regexp/ZRegularExpressionUnitTest.java b/core-java-modules/core-java-regex-2/src/test/java/com/baeldung/regex/z_regexp/ZRegularExpressionUnitTest.java
new file mode 100644
index 0000000000..90bbbb6540
--- /dev/null
+++ b/core-java-modules/core-java-regex-2/src/test/java/com/baeldung/regex/z_regexp/ZRegularExpressionUnitTest.java
@@ -0,0 +1,35 @@
+package com.baeldung.regex.z_regexp;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+public class ZRegularExpressionUnitTest {
+ @Test
+ public void givenCreditCardNumber_thenReturnIfMatched() {
+ String creditCardNumber = "1234567890123456";
+ String pattern = "\\d{16}\\z";
+ Assertions.assertTrue(creditCardNumber.matches(pattern));
+ }
+
+ @Test
+ public void givenLogOutput_thenReturnIfMatched() {
+ String logLine = "2022-05-01 14:30:00,123 INFO Some log message";
+ String pattern = ".*message\\z";
+ Assertions.assertTrue(logLine.matches(pattern));
+ }
+
+ @Test
+ public void givenEmailMessage_thenReturnIfMatched() {
+ String myMessage = "Hello HR, I hope i can write to Baeldung\n";
+ String pattern = ".*Baeldung\\s*\\Z";
+ Assertions.assertTrue(myMessage.matches(pattern));
+ }
+
+ @Test
+ public void givenFileExtension_thenReturnIfMatched() {
+ String fileName = "image.jpeg";
+ String pattern = ".*\\.jpeg\\Z";
+ Assertions.assertTrue(fileName.matches(pattern));
+ }
+
+}
diff --git a/core-java-modules/core-java-string-apis-2/src/test/java/com/baeldung/nullandempty/NullAndEmptyStringUnitTest.java b/core-java-modules/core-java-string-apis-2/src/test/java/com/baeldung/nullandempty/NullAndEmptyStringUnitTest.java
new file mode 100644
index 0000000000..332a16fd84
--- /dev/null
+++ b/core-java-modules/core-java-string-apis-2/src/test/java/com/baeldung/nullandempty/NullAndEmptyStringUnitTest.java
@@ -0,0 +1,27 @@
+package com.baeldung.nullandempty;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+
+import org.junit.jupiter.api.Test;
+
+public class NullAndEmptyStringUnitTest {
+
+ @Test
+ void givenANullAndEmptyString_whenUsingStringMethods_thenShouldGetExpectedResult() {
+ String nullString = null;
+ String emptyString = "";
+ assertTrue(emptyString.equals(""));
+ assertThrows(NullPointerException.class, () -> nullString.length());
+ }
+
+ @Test
+ void givenANullAndEmptyString_whenCheckingEquality_thenShouldGetExpectedResult() {
+ String nullString = null;
+ String emptyString = "";
+ assertFalse(emptyString.equals(nullString));
+ assertFalse(emptyString == nullString);
+ }
+
+}
diff --git a/core-java-modules/core-java-string-operations-5/README.md b/core-java-modules/core-java-string-operations-5/README.md
index 70a4f5607e..3a09c8a585 100644
--- a/core-java-modules/core-java-string-operations-5/README.md
+++ b/core-java-modules/core-java-string-operations-5/README.md
@@ -10,3 +10,5 @@
- [Guide to Splitting a String by Whitespace in Java](https://www.baeldung.com/java-splitting-a-string-by-whitespace)
- [Check if the First Letter of a String Is a Number](https://www.baeldung.com/java-check-if-string-starts-with-number)
- [Print “” Quotes Around a String in Java](https://www.baeldung.com/java-string-print-quotes)
+- [Remove Punctuation From a String in Java](https://www.baeldung.com/java-remove-punctuation-from-string)
+- [Find the Longest Word in a Given String in Java](https://www.baeldung.com/java-longest-word-string)
diff --git a/core-java-modules/core-java-string-operations-5/src/main/java/com/baeldung/longestword/LongestWordFinder.java b/core-java-modules/core-java-string-operations-5/src/main/java/com/baeldung/longestword/LongestWordFinder.java
new file mode 100644
index 0000000000..770984ac29
--- /dev/null
+++ b/core-java-modules/core-java-string-operations-5/src/main/java/com/baeldung/longestword/LongestWordFinder.java
@@ -0,0 +1,36 @@
+package com.baeldung.longestword;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+public class LongestWordFinder {
+
+ public Optional findLongestWord(String sentence) {
+ return Optional.ofNullable(sentence)
+ .filter(string -> !string.trim()
+ .isEmpty())
+ .map(string -> string.split("\\s"))
+ .map(Arrays::asList)
+ .map(list -> Collections.max(list, Comparator.comparingInt(String::length)));
+ }
+
+ public List findLongestWords(String sentence) {
+ if (sentence == null || sentence.trim()
+ .isEmpty()) {
+ return Collections.emptyList();
+ }
+ String[] words = sentence.split("\\s");
+ int maxWordLength = Arrays.stream(words)
+ .mapToInt(String::length)
+ .max()
+ .orElseThrow();
+ return Arrays.stream(words)
+ .filter(word -> word.length() == maxWordLength)
+ .collect(Collectors.toList());
+ }
+
+}
diff --git a/core-java-modules/core-java-string-operations-5/src/test/java/com/baeldung/longestword/LongestWordFinderUnitTest.java b/core-java-modules/core-java-string-operations-5/src/test/java/com/baeldung/longestword/LongestWordFinderUnitTest.java
new file mode 100644
index 0000000000..9d5f82d493
--- /dev/null
+++ b/core-java-modules/core-java-string-operations-5/src/test/java/com/baeldung/longestword/LongestWordFinderUnitTest.java
@@ -0,0 +1,62 @@
+package com.baeldung.longestword;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.jupiter.api.Test;
+
+class LongestWordFinderUnitTest {
+
+ LongestWordFinder longestWordFinder = new LongestWordFinder();
+
+ @Test
+ void givenNull_whenFindLongestWord_thenEmpty() {
+ assertThat(longestWordFinder.findLongestWord(null)).isEmpty();
+ }
+
+ @Test
+ void givenEmptyString_whenFindLongestWord_thenEmpty() {
+ assertThat(longestWordFinder.findLongestWord("")).isEmpty();
+ }
+
+ @Test
+ void givenStringWithOnlySpaces_whenFindLongestWord_thenEmpty() {
+ assertThat(longestWordFinder.findLongestWord(" ")).isEmpty();
+ }
+
+ @Test
+ void givenAPhraseWithALongestWord_whenFindLongestWord_thenLongestWordOfThePhrase() {
+ assertThat(longestWordFinder.findLongestWord("This is a phrase with words")).hasValue("phrase");
+ }
+
+ @Test
+ void givenAPhraseWithVariousWordsOfMaxLength_whenFindLongestWord_thenAnyOfTheLongestsWordsOfThePhrase() {
+ assertThat(longestWordFinder.findLongestWord("Baeldung is another word of size eight in this sentence")
+ .get()).isIn("Baeldung", "sentence");
+ }
+
+ @Test
+ void givenNull_whenFindLongestWords_thenEmpty() {
+ assertThat(longestWordFinder.findLongestWords(null)).isEmpty();
+ }
+
+ @Test
+ void givenEmptyString_whenFindLongestWords_thenEmpty() {
+ assertThat(longestWordFinder.findLongestWords("")).isEmpty();
+ }
+
+ @Test
+ void givenStringWithOnlySpaces_whenFindLongestWords_thenEmpty() {
+ assertThat(longestWordFinder.findLongestWords(" ")).isEmpty();
+ }
+
+ @Test
+ void givenAPhraseWithALongestWord_whenFindLongestWords_thenLongestWordOfThePhrase() {
+ assertThat(longestWordFinder.findLongestWords("This is a phrase with words")).containsExactly("phrase");
+ }
+
+ @Test
+ void givenAPhraseWithVariousWordsOfMaxLength_whenFindLongestWords_thenAllLongestsWords() {
+ assertThat(longestWordFinder.findLongestWords("Baeldung is another word of size eight in this sentence")).containsExactly("Baeldung", "sentence");
+ }
+
+}
diff --git a/core-java-modules/core-java-strings/src/main/java/com/baeldung/stringbuilder/ReuseStringBuilderPerformance.java b/core-java-modules/core-java-strings/src/main/java/com/baeldung/stringbuilder/ReuseStringBuilderPerformance.java
new file mode 100644
index 0000000000..b403f859bc
--- /dev/null
+++ b/core-java-modules/core-java-strings/src/main/java/com/baeldung/stringbuilder/ReuseStringBuilderPerformance.java
@@ -0,0 +1,55 @@
+package com.baeldung.stringbuilder;
+
+import org.openjdk.jmh.annotations.*;
+import org.openjdk.jmh.runner.Runner;
+import org.openjdk.jmh.runner.options.Options;
+import org.openjdk.jmh.runner.options.OptionsBuilder;
+
+import java.util.concurrent.TimeUnit;
+
+@BenchmarkMode(Mode.SingleShotTime)
+@OutputTimeUnit(TimeUnit.MILLISECONDS)
+@Measurement(batchSize = 100000, iterations = 10)
+@Warmup(batchSize = 100000, iterations = 10)
+@State(Scope.Thread)
+public class ReuseStringBuilderPerformance {
+
+ @Benchmark
+ public void benchmarkStringBuilder() {
+ for (int i = 0; i < 100; i++) {
+ StringBuilder stringBuilder = new StringBuilder();
+ stringBuilder.append("baeldung");
+ stringBuilder.toString();
+ }
+ }
+
+ @Benchmark
+ public void benchmarkStringBuilderReuseWithSetLength() {
+ StringBuilder stringBuilder = new StringBuilder();
+ for (int i = 0; i < 100; i++) {
+ stringBuilder.append("baeldung");
+ stringBuilder.toString();
+ stringBuilder.setLength(0);
+ }
+ }
+
+ @Benchmark()
+ public void benchmarkStringBuilderReuseWithDelete() {
+ StringBuilder stringBuilder = new StringBuilder();
+ for (int i = 0; i < 100; i++) {
+ stringBuilder.append("baeldung");
+ stringBuilder.toString();
+ stringBuilder.delete(0, stringBuilder.length());
+ }
+ }
+
+ public static void main(String[] args) throws Exception {
+ Options options = new OptionsBuilder()
+ .include(ReuseStringBuilderPerformance.class.getSimpleName()).threads(1)
+ .forks(1).shouldFailOnError(true)
+ .shouldDoGC(true)
+ .jvmArgs("-server").build();
+ new Runner(options).run();
+ }
+
+}
diff --git a/json-modules/json-path/src/test/java/com/baeldung/jsonpath/introduction/ServiceIntegrationTest.java b/json-modules/json-path/src/test/java/com/baeldung/jsonpath/introduction/ServiceIntegrationTest.java
index 85e5d3e826..1a84fae3c4 100644
--- a/json-modules/json-path/src/test/java/com/baeldung/jsonpath/introduction/ServiceIntegrationTest.java
+++ b/json-modules/json-path/src/test/java/com/baeldung/jsonpath/introduction/ServiceIntegrationTest.java
@@ -1,9 +1,11 @@
package com.baeldung.jsonpath.introduction;
import com.jayway.jsonpath.Configuration;
+import com.jayway.jsonpath.Criteria;
import com.jayway.jsonpath.DocumentContext;
import com.jayway.jsonpath.JsonPath;
import com.jayway.jsonpath.Option;
+import com.jayway.jsonpath.Filter;
import org.junit.Test;
import java.io.InputStream;
@@ -98,4 +100,14 @@ public class ServiceIntegrationTest {
assertEquals("Spectre", title);
}
+
+ @Test
+ public void givenJsonPathWithFilterPredicate_whenReadingRootNode_thenCorrect() {
+ Filter expensiveFilter = Filter.filter(Criteria.where("director")
+ .contains("Sam Mendes"));
+ List
+ 5.5.13.3
7.2.3
3.0.1
+ 3.0.0-RC1
\ No newline at end of file
diff --git a/pdf/pom.xml b/pdf/pom.xml
index 4bfc7cb621..cead1b2ded 100644
--- a/pdf/pom.xml
+++ b/pdf/pom.xml
@@ -106,7 +106,7 @@
2.0.25
2.0.1
- 5.5.10
+ 5.5.13.3
5.5.10
3.15
1.8
diff --git a/persistence-modules/hibernate-annotations/pom.xml b/persistence-modules/hibernate-annotations/pom.xml
index 310b409a00..6417421fed 100644
--- a/persistence-modules/hibernate-annotations/pom.xml
+++ b/persistence-modules/hibernate-annotations/pom.xml
@@ -76,13 +76,18 @@
${org.springframework.version}
test
+
+ io.hypersistence
+ hypersistence-utils-hibernate-60
+ 3.3.1
+
- 5.0.2.RELEASE
- 1.10.6.RELEASE
- 5.6.7.Final
+ 6.0.6
+ 3.0.3
+ 6.1.7.Final
true
9.0.0.M26
diff --git a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/creationupdatetimestamp/model/Book.java b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/creationupdatetimestamp/model/Book.java
index 0677b46690..0484c31ced 100644
--- a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/creationupdatetimestamp/model/Book.java
+++ b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/creationupdatetimestamp/model/Book.java
@@ -2,9 +2,9 @@ package com.baeldung.hibernate.creationupdatetimestamp.model;
import java.time.Instant;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;
diff --git a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/customtypes/AddressType.java b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/customtypes/AddressType.java
index c10c67df9a..f50d8fd7cc 100644
--- a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/customtypes/AddressType.java
+++ b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/customtypes/AddressType.java
@@ -1,11 +1,11 @@
package com.baeldung.hibernate.customtypes;
import org.hibernate.HibernateException;
+import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
-import org.hibernate.type.IntegerType;
-import org.hibernate.type.StringType;
-import org.hibernate.type.Type;
+import org.hibernate.metamodel.spi.ValueAccess;
import org.hibernate.usertype.CompositeUserType;
+import org.hibernate.usertype.UserType;
import java.io.Serializable;
import java.sql.PreparedStatement;
@@ -14,74 +14,51 @@ import java.sql.SQLException;
import java.sql.Types;
import java.util.Objects;
-public class AddressType implements CompositeUserType {
+public class AddressType implements CompositeUserType, UserType {
@Override
- public String[] getPropertyNames() {
- return new String[]{"addressLine1", "addressLine2",
- "city", "country", "zipcode"};
- }
-
- @Override
- public Type[] getPropertyTypes() {
- return new Type[]{StringType.INSTANCE, StringType.INSTANCE,
- StringType.INSTANCE, StringType.INSTANCE, IntegerType.INSTANCE};
- }
-
- @Override
- public Object getPropertyValue(Object component, int property) throws HibernateException {
-
- Address empAdd = (Address) component;
+ public Object getPropertyValue(Address component, int property) throws HibernateException {
switch (property) {
case 0:
- return empAdd.getAddressLine1();
+ return component.getAddressLine1();
case 1:
- return empAdd.getAddressLine2();
+ return component.getAddressLine2();
case 2:
- return empAdd.getCity();
+ return component.getCity();
case 3:
- return empAdd.getCountry();
+ return component.getCountry();
case 4:
- return Integer.valueOf(empAdd.getZipCode());
+ return component.getZipCode();
+ default:
+ throw new IllegalArgumentException(property +
+ " is an invalid property index for class type " +
+ component.getClass().getName());
}
-
- throw new IllegalArgumentException(property +
- " is an invalid property index for class type " +
- component.getClass().getName());
}
@Override
- public void setPropertyValue(Object component, int property, Object value) throws HibernateException {
-
- Address empAdd = (Address) component;
-
- switch (property) {
- case 0:
- empAdd.setAddressLine1((String) value);
- case 1:
- empAdd.setAddressLine2((String) value);
- case 2:
- empAdd.setCity((String) value);
- case 3:
- empAdd.setCountry((String) value);
- case 4:
- empAdd.setZipCode((Integer) value);
- }
-
- throw new IllegalArgumentException(property +
- " is an invalid property index for class type " +
- component.getClass().getName());
-
+ public Address instantiate(ValueAccess values, SessionFactoryImplementor sessionFactory) {
+ return null;
}
@Override
- public Class returnedClass() {
+ public Class> embeddable() {
return Address.class;
}
@Override
- public boolean equals(Object x, Object y) throws HibernateException {
+ public int getSqlType() {
+ return Types.VARCHAR;
+ }
+
+ @Override
+ public Class returnedClass() {
+ return Address.class;
+ }
+
+ @Override
+ public boolean equals(Address x, Address y) {
if (x == y)
return true;
@@ -92,57 +69,52 @@ public class AddressType implements CompositeUserType {
}
@Override
- public int hashCode(Object x) throws HibernateException {
+ public int hashCode(Address x) {
return x.hashCode();
}
@Override
- public Object nullSafeGet(ResultSet rs, String[] names, SharedSessionContractImplementor session, Object owner) throws HibernateException, SQLException {
-
+ public Address nullSafeGet(ResultSet rs, int position, SharedSessionContractImplementor session, Object owner) throws SQLException {
Address empAdd = new Address();
- empAdd.setAddressLine1(rs.getString(names[0]));
+ empAdd.setAddressLine1(rs.getString(position));
if (rs.wasNull())
return null;
- empAdd.setAddressLine2(rs.getString(names[1]));
- empAdd.setCity(rs.getString(names[2]));
- empAdd.setCountry(rs.getString(names[3]));
- empAdd.setZipCode(rs.getInt(names[4]));
+ empAdd.setAddressLine2(rs.getString(position));
+ empAdd.setCity(rs.getString(position));
+ empAdd.setCountry(rs.getString(position));
+ empAdd.setZipCode(rs.getInt(position));
return empAdd;
}
@Override
- public void nullSafeSet(PreparedStatement st, Object value, int index, SharedSessionContractImplementor session) throws HibernateException, SQLException {
-
+ public void nullSafeSet(PreparedStatement st, Address value, int index, SharedSessionContractImplementor session) throws SQLException {
if (Objects.isNull(value))
st.setNull(index, Types.VARCHAR);
else {
- Address empAdd = (Address) value;
- st.setString(index, empAdd.getAddressLine1());
- st.setString(index + 1, empAdd.getAddressLine2());
- st.setString(index + 2, empAdd.getCity());
- st.setString(index + 3, empAdd.getCountry());
- st.setInt(index + 4, empAdd.getZipCode());
+ st.setString(index, value.getAddressLine1());
+ st.setString(index + 1, value.getAddressLine2());
+ st.setString(index + 2, value.getCity());
+ st.setString(index + 3, value.getCountry());
+ st.setInt(index + 4, value.getZipCode());
}
}
@Override
- public Object deepCopy(Object value) throws HibernateException {
-
+ public Address deepCopy(Address value) {
if (Objects.isNull(value))
return null;
- Address oldEmpAdd = (Address) value;
Address newEmpAdd = new Address();
- newEmpAdd.setAddressLine1(oldEmpAdd.getAddressLine1());
- newEmpAdd.setAddressLine2(oldEmpAdd.getAddressLine2());
- newEmpAdd.setCity(oldEmpAdd.getCity());
- newEmpAdd.setCountry(oldEmpAdd.getCountry());
- newEmpAdd.setZipCode(oldEmpAdd.getZipCode());
+ newEmpAdd.setAddressLine1(value.getAddressLine1());
+ newEmpAdd.setAddressLine2(value.getAddressLine2());
+ newEmpAdd.setCity(value.getCity());
+ newEmpAdd.setCountry(value.getCountry());
+ newEmpAdd.setZipCode(value.getZipCode());
return newEmpAdd;
}
@@ -153,17 +125,27 @@ public class AddressType implements CompositeUserType {
}
@Override
- public Serializable disassemble(Object value, SharedSessionContractImplementor session) throws HibernateException {
+ public Serializable disassemble(Address value) {
return (Serializable) deepCopy(value);
}
@Override
- public Object assemble(Serializable cached, SharedSessionContractImplementor session, Object owner) throws HibernateException {
- return deepCopy(cached);
+ public Address assemble(Serializable cached, Object owner) {
+ return deepCopy((Address) cached);
}
@Override
- public Object replace(Object original, Object target, SharedSessionContractImplementor session, Object owner) throws HibernateException {
- return original;
+ public Address replace(Address detached, Address managed, Object owner) {
+ return detached;
+ }
+
+ @Override
+ public boolean isInstance(Object object, SessionFactoryImplementor sessionFactory) {
+ return CompositeUserType.super.isInstance(object, sessionFactory);
+ }
+
+ @Override
+ public boolean isSameClass(Object object, SessionFactoryImplementor sessionFactory) {
+ return CompositeUserType.super.isSameClass(object, sessionFactory);
}
}
diff --git a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/customtypes/LocalDateStringJavaDescriptor.java b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/customtypes/LocalDateStringJavaDescriptor.java
index 56be9e693f..8f1794b979 100644
--- a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/customtypes/LocalDateStringJavaDescriptor.java
+++ b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/customtypes/LocalDateStringJavaDescriptor.java
@@ -1,14 +1,14 @@
package com.baeldung.hibernate.customtypes;
-import org.hibernate.type.LocalDateType;
import org.hibernate.type.descriptor.WrapperOptions;
-import org.hibernate.type.descriptor.java.AbstractTypeDescriptor;
import org.hibernate.type.descriptor.java.ImmutableMutabilityPlan;
-import org.hibernate.type.descriptor.java.MutabilityPlan;
import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
-public class LocalDateStringJavaDescriptor extends AbstractTypeDescriptor {
+import io.hypersistence.utils.hibernate.type.array.internal.AbstractArrayTypeDescriptor;
+
+public class LocalDateStringJavaDescriptor extends AbstractArrayTypeDescriptor {
public static final LocalDateStringJavaDescriptor INSTANCE = new LocalDateStringJavaDescriptor();
@@ -18,12 +18,12 @@ public class LocalDateStringJavaDescriptor extends AbstractTypeDescriptor implements DiscriminatorType {
+public class LocalDateStringType extends AbstractSingleColumnStandardBasicType {
public static final LocalDateStringType INSTANCE = new LocalDateStringType();
public LocalDateStringType() {
- super(VarcharTypeDescriptor.INSTANCE, LocalDateStringJavaDescriptor.INSTANCE);
+ super(VarcharJdbcType.INSTANCE, LocalDateStringJavaDescriptor.INSTANCE);
}
@Override
@@ -21,14 +19,12 @@ public class LocalDateStringType extends AbstractSingleColumnStandardBasicType {
-public class PhoneNumberType implements UserType {
@Override
- public int[] sqlTypes() {
- return new int[]{Types.INTEGER, Types.INTEGER, Types.INTEGER};
+ public int getSqlType() {
+ return Types.INTEGER;
}
@Override
@@ -24,7 +23,7 @@ public class PhoneNumberType implements UserType {
}
@Override
- public boolean equals(Object x, Object y) throws HibernateException {
+ public boolean equals(PhoneNumber x, PhoneNumber y) {
if (x == y)
return true;
if (Objects.isNull(x) || Objects.isNull(y))
@@ -34,48 +33,42 @@ public class PhoneNumberType implements UserType {
}
@Override
- public int hashCode(Object x) throws HibernateException {
+ public int hashCode(PhoneNumber x) {
return x.hashCode();
}
@Override
- public Object nullSafeGet(ResultSet rs, String[] names, SharedSessionContractImplementor session, Object owner) throws HibernateException, SQLException {
- int countryCode = rs.getInt(names[0]);
+ public PhoneNumber nullSafeGet(ResultSet rs, int position, SharedSessionContractImplementor session, Object owner) throws SQLException {
+ int countryCode = rs.getInt(position);
if (rs.wasNull())
return null;
- int cityCode = rs.getInt(names[1]);
- int number = rs.getInt(names[2]);
- PhoneNumber employeeNumber = new PhoneNumber(countryCode, cityCode, number);
+ int cityCode = rs.getInt(position);
+ int number = rs.getInt(position);
- return employeeNumber;
+ return new PhoneNumber(countryCode, cityCode, number);
}
@Override
- public void nullSafeSet(PreparedStatement st, Object value, int index, SharedSessionContractImplementor session) throws HibernateException, SQLException {
-
+ public void nullSafeSet(PreparedStatement st, PhoneNumber value, int index, SharedSessionContractImplementor session) throws SQLException {
if (Objects.isNull(value)) {
st.setNull(index, Types.INTEGER);
st.setNull(index+1, Types.INTEGER);
st.setNull(index+2, Types.INTEGER);
} else {
- PhoneNumber employeeNumber = (PhoneNumber) value;
- st.setInt(index,employeeNumber.getCountryCode());
- st.setInt(index+1,employeeNumber.getCityCode());
- st.setInt(index+2,employeeNumber.getNumber());
+ st.setInt(index, value.getCountryCode());
+ st.setInt(index+1, value.getCityCode());
+ st.setInt(index+2, value.getNumber());
}
}
@Override
- public Object deepCopy(Object value) throws HibernateException {
+ public PhoneNumber deepCopy(PhoneNumber value) {
if (Objects.isNull(value))
return null;
- PhoneNumber empNumber = (PhoneNumber) value;
- PhoneNumber newEmpNumber = new PhoneNumber(empNumber.getCountryCode(),empNumber.getCityCode(),empNumber.getNumber());
-
- return newEmpNumber;
+ return new PhoneNumber(value.getCountryCode(), value.getCityCode(), value.getNumber());
}
@Override
@@ -84,17 +77,17 @@ public class PhoneNumberType implements UserType {
}
@Override
- public Serializable disassemble(Object value) throws HibernateException {
+ public Serializable disassemble(PhoneNumber value) {
return (Serializable) value;
}
@Override
- public Object assemble(Serializable cached, Object owner) throws HibernateException {
- return cached;
+ public PhoneNumber assemble(Serializable cached, Object owner) {
+ return (PhoneNumber) cached;
}
@Override
- public Object replace(Object original, Object target, Object owner) throws HibernateException {
- return original;
+ public PhoneNumber replace(PhoneNumber detached, PhoneNumber managed, Object owner) {
+ return detached;
}
}
diff --git a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/customtypes/SalaryType.java b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/customtypes/SalaryType.java
index 266b85140b..69e34c1363 100644
--- a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/customtypes/SalaryType.java
+++ b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/customtypes/SalaryType.java
@@ -1,12 +1,12 @@
package com.baeldung.hibernate.customtypes;
import org.hibernate.HibernateException;
+import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
-import org.hibernate.type.LongType;
-import org.hibernate.type.StringType;
-import org.hibernate.type.Type;
+import org.hibernate.metamodel.spi.ValueAccess;
import org.hibernate.usertype.CompositeUserType;
import org.hibernate.usertype.DynamicParameterizedType;
+import org.hibernate.usertype.UserType;
import java.io.Serializable;
import java.sql.PreparedStatement;
@@ -16,65 +16,47 @@ import java.sql.Types;
import java.util.Objects;
import java.util.Properties;
-public class SalaryType implements CompositeUserType, DynamicParameterizedType {
+public class SalaryType implements UserType, CompositeUserType, DynamicParameterizedType {
private String localCurrency;
@Override
- public String[] getPropertyNames() {
- return new String[]{"amount", "currency"};
- }
-
- @Override
- public Type[] getPropertyTypes() {
- return new Type[]{LongType.INSTANCE, StringType.INSTANCE};
- }
-
- @Override
- public Object getPropertyValue(Object component, int property) throws HibernateException {
-
- Salary salary = (Salary) component;
+ public Object getPropertyValue(Salary component, int property) throws HibernateException {
switch (property) {
case 0:
- return salary.getAmount();
+ return component.getAmount();
case 1:
- return salary.getCurrency();
+ return component.getCurrency();
+ default:
+ throw new IllegalArgumentException(property +
+ " is an invalid property index for class type " +
+ component.getClass().getName());
}
-
- throw new IllegalArgumentException(property +
- " is an invalid property index for class type " +
- component.getClass().getName());
-
- }
-
-
- @Override
- public void setPropertyValue(Object component, int property, Object value) throws HibernateException {
-
- Salary salary = (Salary) component;
-
- switch (property) {
- case 0:
- salary.setAmount((Long) value);
- case 1:
- salary.setCurrency((String) value);
- }
-
- throw new IllegalArgumentException(property +
- " is an invalid property index for class type " +
- component.getClass().getName());
-
}
@Override
- public Class returnedClass() {
+ public Salary instantiate(ValueAccess values, SessionFactoryImplementor sessionFactory) {
+ return null;
+ }
+
+ @Override
+ public Class> embeddable() {
return Salary.class;
}
@Override
- public boolean equals(Object x, Object y) throws HibernateException {
+ public int getSqlType() {
+ return Types.BIGINT;
+ }
+ @Override
+ public Class returnedClass() {
+ return Salary.class;
+ }
+
+ @Override
+ public boolean equals(Salary x, Salary y) {
if (x == y)
return true;
@@ -82,54 +64,48 @@ public class SalaryType implements CompositeUserType, DynamicParameterizedType {
return false;
return x.equals(y);
-
}
@Override
- public int hashCode(Object x) throws HibernateException {
+ public int hashCode(Salary x) {
return x.hashCode();
}
@Override
- public Object nullSafeGet(ResultSet rs, String[] names, SharedSessionContractImplementor session, Object owner) throws HibernateException, SQLException {
-
+ public Salary nullSafeGet(ResultSet rs, int position, SharedSessionContractImplementor session, Object owner) throws SQLException {
Salary salary = new Salary();
- salary.setAmount(rs.getLong(names[0]));
+ salary.setAmount(rs.getLong(position));
if (rs.wasNull())
return null;
- salary.setCurrency(rs.getString(names[1]));
+ salary.setCurrency(rs.getString(position));
return salary;
}
@Override
- public void nullSafeSet(PreparedStatement st, Object value, int index, SharedSessionContractImplementor session) throws HibernateException, SQLException {
-
-
+ public void nullSafeSet(PreparedStatement st, Salary value, int index, SharedSessionContractImplementor session) throws SQLException {
if (Objects.isNull(value))
st.setNull(index, Types.BIGINT);
else {
- Salary salary = (Salary) value;
- st.setLong(index, SalaryCurrencyConvertor.convert(salary.getAmount(),
- salary.getCurrency(), localCurrency));
- st.setString(index + 1, salary.getCurrency());
+ st.setLong(index, SalaryCurrencyConvertor.convert(
+ value.getAmount(),
+ value.getCurrency(), localCurrency));
+ st.setString(index + 1, value.getCurrency());
}
}
@Override
- public Object deepCopy(Object value) throws HibernateException {
-
+ public Salary deepCopy(Salary value) {
if (Objects.isNull(value))
return null;
- Salary oldSal = (Salary) value;
Salary newSal = new Salary();
- newSal.setAmount(oldSal.getAmount());
- newSal.setCurrency(oldSal.getCurrency());
+ newSal.setAmount(value.getAmount());
+ newSal.setCurrency(value.getCurrency());
return newSal;
}
@@ -140,18 +116,18 @@ public class SalaryType implements CompositeUserType, DynamicParameterizedType {
}
@Override
- public Serializable disassemble(Object value, SharedSessionContractImplementor session) throws HibernateException {
+ public Serializable disassemble(Salary value) {
return (Serializable) deepCopy(value);
}
@Override
- public Object assemble(Serializable cached, SharedSessionContractImplementor session, Object owner) throws HibernateException {
- return deepCopy(cached);
+ public Salary assemble(Serializable cached, Object owner) {
+ return deepCopy((Salary) cached);
}
@Override
- public Object replace(Object original, Object target, SharedSessionContractImplementor session, Object owner) throws HibernateException {
- return original;
+ public Salary replace(Salary detached, Salary managed, Object owner) {
+ return detached;
}
@Override
diff --git a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/immutable/entities/Event.java b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/immutable/entities/Event.java
index ec88d629a6..f16aa68475 100644
--- a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/immutable/entities/Event.java
+++ b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/immutable/entities/Event.java
@@ -4,7 +4,7 @@ import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Immutable;
-import javax.persistence.*;
+import jakarta.persistence.*;
import java.util.Set;
@Entity
diff --git a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/immutable/entities/EventGeneratedId.java b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/immutable/entities/EventGeneratedId.java
index 33af9313ae..6bf4006550 100644
--- a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/immutable/entities/EventGeneratedId.java
+++ b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/immutable/entities/EventGeneratedId.java
@@ -3,7 +3,7 @@ package com.baeldung.hibernate.immutable.entities;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Immutable;
-import javax.persistence.*;
+import jakarta.persistence.*;
@Entity
@Immutable
diff --git a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/joincolumn/Email.java b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/joincolumn/Email.java
index df07c3cf69..096faf7984 100644
--- a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/joincolumn/Email.java
+++ b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/joincolumn/Email.java
@@ -1,12 +1,12 @@
package com.baeldung.hibernate.joincolumn;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
@Entity
public class Email {
diff --git a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/joincolumn/Office.java b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/joincolumn/Office.java
index 9940577761..3c6e5f4642 100644
--- a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/joincolumn/Office.java
+++ b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/joincolumn/Office.java
@@ -1,13 +1,13 @@
package com.baeldung.hibernate.joincolumn;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.JoinColumns;
-import javax.persistence.ManyToOne;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.JoinColumns;
+import jakarta.persistence.ManyToOne;
@Entity
public class Office {
diff --git a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/joincolumn/OfficeAddress.java b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/joincolumn/OfficeAddress.java
index cc723db6a2..d80a8be026 100644
--- a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/joincolumn/OfficeAddress.java
+++ b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/joincolumn/OfficeAddress.java
@@ -1,10 +1,10 @@
package com.baeldung.hibernate.joincolumn;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
@Entity
public class OfficeAddress {
diff --git a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/joincolumn/OfficialEmployee.java b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/joincolumn/OfficialEmployee.java
index 49c63c7578..551b522700 100644
--- a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/joincolumn/OfficialEmployee.java
+++ b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/joincolumn/OfficialEmployee.java
@@ -1,12 +1,12 @@
package com.baeldung.hibernate.joincolumn;
import java.util.List;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.OneToMany;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.OneToMany;
@Entity
public class OfficialEmployee {
diff --git a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/lazycollection/model/Branch.java b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/lazycollection/model/Branch.java
index de88647546..9957e2ce75 100644
--- a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/lazycollection/model/Branch.java
+++ b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/lazycollection/model/Branch.java
@@ -3,12 +3,12 @@ package com.baeldung.hibernate.lazycollection.model;
import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.OrderColumn;
-import javax.persistence.OneToMany;
-import javax.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.OrderColumn;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.Entity;
import java.util.ArrayList;
import java.util.List;
diff --git a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/lazycollection/model/Employee.java b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/lazycollection/model/Employee.java
index 831518a365..edf89696f5 100644
--- a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/lazycollection/model/Employee.java
+++ b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/lazycollection/model/Employee.java
@@ -1,11 +1,10 @@
package com.baeldung.hibernate.lazycollection.model;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.OrderColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.Entity;
@Entity
public class Employee {
diff --git a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/oneToMany/config/HibernateAnnotationUtil.java b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/oneToMany/config/HibernateAnnotationUtil.java
index ef82c1c9ad..99410e1f76 100644
--- a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/oneToMany/config/HibernateAnnotationUtil.java
+++ b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/oneToMany/config/HibernateAnnotationUtil.java
@@ -43,8 +43,8 @@ public class HibernateAnnotationUtil {
return metadata.buildSessionFactory();
}
- private static Map dbSettings() {
- Map dbSettings = new HashMap<>();
+ private static Map dbSettings() {
+ Map dbSettings = new HashMap<>();
dbSettings.put(Environment.URL, "jdbc:h2:mem:spring_hibernate_one_to_many");
dbSettings.put(Environment.USER, "sa");
dbSettings.put(Environment.PASS, "");
diff --git a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/oneToMany/model/Cart.java b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/oneToMany/model/Cart.java
index 53878af445..f07f3d3887 100644
--- a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/oneToMany/model/Cart.java
+++ b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/oneToMany/model/Cart.java
@@ -2,13 +2,13 @@ package com.baeldung.hibernate.oneToMany.model;
import java.util.Set;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.OneToMany;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.Table;
@Entity
@Table(name = "CART")
diff --git a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/oneToMany/model/CartOIO.java b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/oneToMany/model/CartOIO.java
index 27b28a6753..f279cc4ea6 100644
--- a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/oneToMany/model/CartOIO.java
+++ b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/oneToMany/model/CartOIO.java
@@ -1,13 +1,13 @@
package com.baeldung.hibernate.oneToMany.model;
import java.util.Set;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.OneToMany;
-import javax.persistence.Table;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.Table;
@Entity
@Table(name = "CARTOIO")
diff --git a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/oneToMany/model/Item.java b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/oneToMany/model/Item.java
index a055682d0d..5babe9c545 100644
--- a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/oneToMany/model/Item.java
+++ b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/oneToMany/model/Item.java
@@ -1,13 +1,13 @@
package com.baeldung.hibernate.oneToMany.model;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.Table;
@Entity
@Table(name = "ITEMS")
diff --git a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/oneToMany/model/ItemOIO.java b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/oneToMany/model/ItemOIO.java
index baaf57b106..78139da19e 100644
--- a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/oneToMany/model/ItemOIO.java
+++ b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/oneToMany/model/ItemOIO.java
@@ -1,12 +1,12 @@
package com.baeldung.hibernate.oneToMany.model;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.Table;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.Table;
@Entity
@Table(name = "ITEMSOIO")
diff --git a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/pojo/Phone.java b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/pojo/Phone.java
index d923bda5de..e173aa8b47 100644
--- a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/pojo/Phone.java
+++ b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/pojo/Phone.java
@@ -1,9 +1,9 @@
package com.baeldung.hibernate.pojo;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
import java.io.Serializable;
@Entity
diff --git a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/wherejointable/Group.java b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/wherejointable/Group.java
index 04684eceac..2b17c9218d 100644
--- a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/wherejointable/Group.java
+++ b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/wherejointable/Group.java
@@ -3,10 +3,10 @@ package com.baeldung.hibernate.wherejointable;
import java.util.ArrayList;
import java.util.List;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.ManyToMany;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.ManyToMany;
@Entity(name = "e_group")
public class Group {
diff --git a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/wherejointable/User.java b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/wherejointable/User.java
index 3029aae640..a517de3cca 100644
--- a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/wherejointable/User.java
+++ b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/wherejointable/User.java
@@ -3,12 +3,12 @@ package com.baeldung.hibernate.wherejointable;
import java.util.ArrayList;
import java.util.List;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.JoinTable;
-import javax.persistence.ManyToMany;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.JoinTable;
+import jakarta.persistence.ManyToMany;
import org.hibernate.annotations.WhereJoinTable;
diff --git a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/wherejointable/UserGroupRelation.java b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/wherejointable/UserGroupRelation.java
index 00dd19699c..21a0a443c6 100644
--- a/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/wherejointable/UserGroupRelation.java
+++ b/persistence-modules/hibernate-annotations/src/main/java/com/baeldung/hibernate/wherejointable/UserGroupRelation.java
@@ -2,11 +2,11 @@ package com.baeldung.hibernate.wherejointable;
import java.io.Serializable;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.Id;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.Id;
@Entity(name = "r_user_group")
public class UserGroupRelation implements Serializable {
diff --git a/persistence-modules/hibernate-annotations/src/main/resources/META-INF/persistence.xml b/persistence-modules/hibernate-annotations/src/main/resources/META-INF/persistence.xml
index 474eeb7a44..2915125295 100644
--- a/persistence-modules/hibernate-annotations/src/main/resources/META-INF/persistence.xml
+++ b/persistence-modules/hibernate-annotations/src/main/resources/META-INF/persistence.xml
@@ -7,12 +7,12 @@
Hibernate EntityManager Demo
true
-
+
-
-
-
-
+
+
+
+
\ No newline at end of file
diff --git a/persistence-modules/hibernate-annotations/src/test/java/com/baeldung/hibernate/creationupdatetimestamp/HibernateCreationUpdateTimestampIntegrationTest.java b/persistence-modules/hibernate-annotations/src/test/java/com/baeldung/hibernate/creationupdatetimestamp/HibernateCreationUpdateTimestampIntegrationTest.java
index f309e9e22f..bab51dab72 100644
--- a/persistence-modules/hibernate-annotations/src/test/java/com/baeldung/hibernate/creationupdatetimestamp/HibernateCreationUpdateTimestampIntegrationTest.java
+++ b/persistence-modules/hibernate-annotations/src/test/java/com/baeldung/hibernate/creationupdatetimestamp/HibernateCreationUpdateTimestampIntegrationTest.java
@@ -1,5 +1,6 @@
package com.baeldung.hibernate.creationupdatetimestamp;
+import static org.hibernate.FlushMode.MANUAL;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -71,22 +72,22 @@ class HibernateCreationUpdateTimestampIntegrationTest {
}
@Test
- void whenCreatingEntity_ThenCreatedOnAndLastUpdatedOnAreNotEqual() {
+ void whenCreatingEntity_ThenCreatedOnAndLastUpdatedOnAreEqual() {
session = sessionFactory.openSession();
session.beginTransaction();
Book book = new Book();
session.save(book);
- session.getTransaction()
- .commit();
+ session.getTransaction().commit();
session.close();
- assertNotEquals(book.getCreatedOn(), book.getLastUpdatedOn());
+ assertEquals(book.getCreatedOn(), book.getLastUpdatedOn());
}
@Test
void whenUpdatingEntity_ThenLastUpdatedOnIsUpdatedAndCreatedOnStaysTheSame() {
session = sessionFactory.openSession();
+ session.setHibernateFlushMode(MANUAL);
session.beginTransaction();
Book book = new Book();
session.save(book);
@@ -96,8 +97,9 @@ class HibernateCreationUpdateTimestampIntegrationTest {
String newName = "newName";
book.setTitle(newName);
- session.getTransaction()
- .commit();
+ session.save(book);
+ session.flush();
+ session.getTransaction().commit();
session.close();
Instant createdOnAfterUpdate = book.getCreatedOn();
Instant lastUpdatedOnAfterUpdate = book.getLastUpdatedOn();
diff --git a/persistence-modules/hibernate-annotations/src/test/java/com/baeldung/hibernate/customtypes/HibernateCustomTypesIntegrationTest.java b/persistence-modules/hibernate-annotations/src/test/java/com/baeldung/hibernate/customtypes/HibernateCustomTypesIntegrationTest.java
index 460b65ee12..9da3a90034 100644
--- a/persistence-modules/hibernate-annotations/src/test/java/com/baeldung/hibernate/customtypes/HibernateCustomTypesIntegrationTest.java
+++ b/persistence-modules/hibernate-annotations/src/test/java/com/baeldung/hibernate/customtypes/HibernateCustomTypesIntegrationTest.java
@@ -6,10 +6,9 @@ import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Environment;
import org.hibernate.service.ServiceRegistry;
-import org.junit.Assert;
import org.junit.Test;
-import javax.persistence.TypedQuery;
+import jakarta.persistence.TypedQuery;
import java.time.LocalDate;
import java.util.HashMap;
import java.util.Map;
@@ -76,7 +75,7 @@ public class HibernateCustomTypesIntegrationTest {
doInHibernate(this::sessionFactory, session -> {
session.save(e);
- TypedQuery query = session.createQuery("FROM OfficeEmployee OE WHERE OE.empAddress.zipcode = :pinCode", OfficeEmployee.class);
+ TypedQuery query = session.createQuery("FROM OfficeEmployee OE WHERE OE.empAddress.zipCode = :pinCode", OfficeEmployee.class);
query.setParameter("pinCode",100);
int size = query.getResultList().size();
@@ -100,8 +99,8 @@ public class HibernateCustomTypesIntegrationTest {
return metadata.buildSessionFactory();
}
- private static Map getProperties() {
- Map dbSettings = new HashMap<>();
+ private static Map getProperties() {
+ Map dbSettings = new HashMap<>();
dbSettings.put(Environment.URL, "jdbc:h2:mem:mydb1;DB_CLOSE_DELAY=-1");
dbSettings.put(Environment.USER, "sa");
dbSettings.put(Environment.PASS, "");
diff --git a/persistence-modules/hibernate-annotations/src/test/java/com/baeldung/hibernate/immutable/HibernateImmutableIntegrationTest.java b/persistence-modules/hibernate-annotations/src/test/java/com/baeldung/hibernate/immutable/HibernateImmutableIntegrationTest.java
index 270a235ef0..f038d2b16d 100644
--- a/persistence-modules/hibernate-annotations/src/test/java/com/baeldung/hibernate/immutable/HibernateImmutableIntegrationTest.java
+++ b/persistence-modules/hibernate-annotations/src/test/java/com/baeldung/hibernate/immutable/HibernateImmutableIntegrationTest.java
@@ -8,7 +8,7 @@ import org.hibernate.Session;
import org.junit.*;
import org.junit.rules.ExpectedException;
-import javax.persistence.PersistenceException;
+import jakarta.persistence.PersistenceException;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.IsEqual.equalTo;
diff --git a/persistence-modules/hibernate-annotations/src/test/java/com/baeldung/hibernate/joincolumn/JoinColumnIntegrationTest.java b/persistence-modules/hibernate-annotations/src/test/java/com/baeldung/hibernate/joincolumn/JoinColumnIntegrationTest.java
index 37125e8b15..04f0613811 100644
--- a/persistence-modules/hibernate-annotations/src/test/java/com/baeldung/hibernate/joincolumn/JoinColumnIntegrationTest.java
+++ b/persistence-modules/hibernate-annotations/src/test/java/com/baeldung/hibernate/joincolumn/JoinColumnIntegrationTest.java
@@ -78,8 +78,8 @@ public class JoinColumnIntegrationTest {
return metadata.buildSessionFactory();
}
- private static Map getProperties() {
- Map dbSettings = new HashMap<>();
+ private static Map getProperties() {
+ Map dbSettings = new HashMap<>();
dbSettings.put(Environment.URL, "jdbc:h2:mem:mydbJoinColumn;DB_CLOSE_DELAY=-1");
dbSettings.put(Environment.USER, "sa");
dbSettings.put(Environment.PASS, "");
diff --git a/persistence-modules/hibernate-enterprise/pom.xml b/persistence-modules/hibernate-enterprise/pom.xml
index 833f19c673..eaa7b0e765 100644
--- a/persistence-modules/hibernate-enterprise/pom.xml
+++ b/persistence-modules/hibernate-enterprise/pom.xml
@@ -78,10 +78,11 @@
- 5.3.7.Final
- 6.0.6
- 2.2.3
+ 6.1.7.Final
+ 8.0.32
+ 2.6.0
0.9
+ 1.14.2
\ No newline at end of file
diff --git a/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/exception/EntityWithNoId.java b/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/exception/EntityWithNoId.java
index 989fa1281a..8ef7487804 100644
--- a/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/exception/EntityWithNoId.java
+++ b/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/exception/EntityWithNoId.java
@@ -1,6 +1,6 @@
package com.baeldung.hibernate.exception;
-import javax.persistence.Entity;
+import jakarta.persistence.Entity;
@Entity
public class EntityWithNoId {
diff --git a/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/exception/Product.java b/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/exception/Product.java
index 0724ced56b..b7e80511e6 100644
--- a/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/exception/Product.java
+++ b/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/exception/Product.java
@@ -1,9 +1,9 @@
package com.baeldung.hibernate.exception;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
@Entity
@Table(name = "PRODUCT")
diff --git a/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/exception/ProductEntity.java b/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/exception/ProductEntity.java
index b9c5f5010d..a2dcec61e9 100644
--- a/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/exception/ProductEntity.java
+++ b/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/exception/ProductEntity.java
@@ -1,8 +1,8 @@
package com.baeldung.hibernate.exception;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
@Entity
@Table(name = "PRODUCT")
diff --git a/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/exception/ProductNotMapped.java b/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/exception/ProductNotMapped.java
new file mode 100644
index 0000000000..827ad15e5b
--- /dev/null
+++ b/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/exception/ProductNotMapped.java
@@ -0,0 +1,32 @@
+package com.baeldung.hibernate.exception;
+
+public class ProductNotMapped {
+
+ private int id;
+ private String name;
+ private String description;
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+}
diff --git a/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/logging/Employee.java b/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/logging/Employee.java
index 9dcf4058a7..bc50c11d81 100644
--- a/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/logging/Employee.java
+++ b/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/logging/Employee.java
@@ -1,9 +1,9 @@
package com.baeldung.hibernate.logging;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
@Entity
public class Employee {
diff --git a/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/pojo/PointEntity.java b/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/pojo/PointEntity.java
index 736abde866..23b9a87eef 100644
--- a/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/pojo/PointEntity.java
+++ b/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/pojo/PointEntity.java
@@ -1,11 +1,11 @@
package com.baeldung.hibernate.pojo;
-import com.vividsolutions.jts.geom.Point;
+import org.locationtech.jts.geom.Point;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
@Entity
public class PointEntity {
diff --git a/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/pojo/PolygonEntity.java b/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/pojo/PolygonEntity.java
index 69208c8cd4..32cb146f23 100644
--- a/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/pojo/PolygonEntity.java
+++ b/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/pojo/PolygonEntity.java
@@ -1,10 +1,10 @@
package com.baeldung.hibernate.pojo;
-import com.vividsolutions.jts.geom.Polygon;
+import org.locationtech.jts.geom.Polygon;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
@Entity
public class PolygonEntity {
diff --git a/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/pojo/Student.java b/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/pojo/Student.java
index 9b26c117eb..263908a5fc 100644
--- a/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/pojo/Student.java
+++ b/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/hibernate/pojo/Student.java
@@ -1,9 +1,9 @@
package com.baeldung.hibernate.pojo;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
@Entity
public class Student {
diff --git a/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/persistence/model/Person.java b/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/persistence/model/Person.java
index 6a95a7acf5..3766639975 100644
--- a/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/persistence/model/Person.java
+++ b/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/persistence/model/Person.java
@@ -1,8 +1,8 @@
package com.baeldung.persistence.model;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
@Entity
public class Person {
diff --git a/persistence-modules/hibernate-enterprise/src/main/resources/META-INF/persistence.xml b/persistence-modules/hibernate-enterprise/src/main/resources/META-INF/persistence.xml
index 474eeb7a44..2915125295 100644
--- a/persistence-modules/hibernate-enterprise/src/main/resources/META-INF/persistence.xml
+++ b/persistence-modules/hibernate-enterprise/src/main/resources/META-INF/persistence.xml
@@ -7,12 +7,12 @@
Hibernate EntityManager Demo
true
-
+
-
-
-
-
+
+
+
+
\ No newline at end of file
diff --git a/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/hibernate/HibernateSpatialIntegrationTest.java b/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/hibernate/HibernateSpatialIntegrationTest.java
index 74f752ab8c..e0f13582ab 100644
--- a/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/hibernate/HibernateSpatialIntegrationTest.java
+++ b/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/hibernate/HibernateSpatialIntegrationTest.java
@@ -9,23 +9,23 @@ import java.io.IOException;
import java.net.URL;
import java.util.Properties;
-import javax.persistence.Query;
+import jakarta.persistence.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.io.ParseException;
+import org.locationtech.jts.io.WKTReader;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.geom.Polygon;
+import org.locationtech.jts.util.GeometricShapeFactory;
import com.baeldung.hibernate.pojo.PointEntity;
import com.baeldung.hibernate.pojo.PolygonEntity;
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.Point;
-import com.vividsolutions.jts.geom.Polygon;
-import com.vividsolutions.jts.io.ParseException;
-import com.vividsolutions.jts.io.WKTReader;
-import com.vividsolutions.jts.util.GeometricShapeFactory;
import geodb.GeoDB;
@@ -39,7 +39,7 @@ public class HibernateSpatialIntegrationTest {
session = HibernateUtil.getSessionFactory("hibernate-spatial.properties")
.openSession();
transaction = session.beginTransaction();
- session.doWork(conn -> { GeoDB.InitGeoDB(conn); });
+ session.doWork(GeoDB::InitGeoDB);
}
@After
@@ -135,9 +135,7 @@ public class HibernateSpatialIntegrationTest {
private Geometry wktToGeometry(String wellKnownText) throws ParseException {
WKTReader fromText = new WKTReader();
- Geometry geom = null;
- geom = fromText.read(wellKnownText);
- return geom;
+ return fromText.read(wellKnownText);
}
private static Geometry createCircle(double x, double y, double radius) {
diff --git a/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/hibernate/exception/HibernateExceptionUnitTest.java b/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/hibernate/exception/HibernateExceptionUnitTest.java
index 891352843d..37c21d1899 100644
--- a/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/hibernate/exception/HibernateExceptionUnitTest.java
+++ b/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/hibernate/exception/HibernateExceptionUnitTest.java
@@ -6,28 +6,25 @@ import static org.junit.Assert.assertNotNull;
import java.io.IOException;
import java.util.List;
-import javax.persistence.OptimisticLockException;
-import javax.persistence.PersistenceException;
+import jakarta.persistence.OptimisticLockException;
+import jakarta.persistence.PersistenceException;
-import org.hibernate.AnnotationException;
import org.hibernate.HibernateException;
import org.hibernate.MappingException;
import org.hibernate.NonUniqueObjectException;
import org.hibernate.PropertyValueException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
-import org.hibernate.StaleObjectStateException;
import org.hibernate.StaleStateException;
import org.hibernate.Transaction;
-import org.hibernate.TransactionException;
import org.hibernate.cfg.AvailableSettings;
import org.hibernate.cfg.Configuration;
import org.hibernate.exception.ConstraintViolationException;
import org.hibernate.exception.DataException;
import org.hibernate.exception.SQLGrammarException;
-import org.hibernate.hql.internal.ast.QuerySyntaxException;
import org.hibernate.id.IdentifierGenerationException;
import org.hibernate.query.NativeQuery;
+import org.hibernate.query.sqm.UnknownEntityException;
import org.hibernate.tool.schema.spi.CommandAcceptanceException;
import org.hibernate.tool.schema.spi.SchemaManagementException;
import org.junit.Before;
@@ -63,12 +60,15 @@ public class HibernateExceptionUnitTest {
@Test
public void whenQueryExecutedWithUnmappedEntity_thenMappingException() {
- thrown.expectCause(isA(MappingException.class));
- thrown.expectMessage("Unknown entity: java.lang.String");
+ thrown.expect(isA(MappingException.class));
+ thrown.expectMessage("Unable to locate persister: com.baeldung.hibernate.exception.ProductNotMapped");
+
+ ProductNotMapped product = new ProductNotMapped();
+ product.setId(1);
+ product.setName("test");
Session session = sessionFactory.openSession();
- NativeQuery query = session.createNativeQuery("select name from PRODUCT", String.class);
- query.getResultList();
+ session.save(product);
}
@Test
@@ -82,8 +82,8 @@ public class HibernateExceptionUnitTest {
@Test
public void whenQueryExecutedWithInvalidClassName_thenQuerySyntaxException() {
- thrown.expectCause(isA(QuerySyntaxException.class));
- thrown.expectMessage("PRODUCT is not mapped [from PRODUCT]");
+ thrown.expectCause(isA(UnknownEntityException.class));
+ thrown.expectMessage("Could not resolve root entity 'PRODUCT");
Session session = sessionFactory.openSession();
List results = session.createQuery("from PRODUCT", Product.class)
@@ -92,8 +92,8 @@ public class HibernateExceptionUnitTest {
@Test
public void givenEntityWithoutId_whenSessionFactoryCreated_thenAnnotationException() {
- thrown.expect(AnnotationException.class);
- thrown.expectMessage("No identifier specified for entity");
+ thrown.expect(isA(HibernateException.class));
+ thrown.expectMessage("Entity 'com.baeldung.hibernate.exception.EntityWithNoId' has no identifier (every '@Entity' class must declare or inherit at least one '@Id' or '@EmbeddedId' property)");
Configuration cfg = getConfiguration();
cfg.addAnnotatedClass(EntityWithNoId.class);
@@ -132,9 +132,8 @@ public class HibernateExceptionUnitTest {
@Test
public void givenMissingTable_whenEntitySaved_thenSQLGrammarException() {
- thrown.expect(isA(PersistenceException.class));
thrown.expectCause(isA(SQLGrammarException.class));
- thrown.expectMessage("SQLGrammarException: could not prepare statement");
+ thrown.expectMessage("could not prepare statement");
Configuration cfg = getConfiguration();
cfg.addAnnotatedClass(Product.class);
@@ -162,9 +161,8 @@ public class HibernateExceptionUnitTest {
@Test
public void givenMissingTable_whenQueryExecuted_thenSQLGrammarException() {
- thrown.expect(isA(PersistenceException.class));
thrown.expectCause(isA(SQLGrammarException.class));
- thrown.expectMessage("SQLGrammarException: could not prepare statement");
+ thrown.expectMessage("could not prepare statement");
Session session = sessionFactory.openSession();
NativeQuery query = session.createNativeQuery("select * from NON_EXISTING_TABLE", Product.class);
@@ -173,9 +171,8 @@ public class HibernateExceptionUnitTest {
@Test
public void whenDuplicateIdSaved_thenConstraintViolationException() {
- thrown.expect(isA(PersistenceException.class));
thrown.expectCause(isA(ConstraintViolationException.class));
- thrown.expectMessage("ConstraintViolationException: could not execute statement");
+ thrown.expectMessage("could not execute statement");
Session session = null;
Transaction transaction = null;
@@ -253,7 +250,7 @@ public class HibernateExceptionUnitTest {
@Test
public void givenQueryWithDataTypeMismatch_WhenQueryExecuted_thenDataException() {
thrown.expectCause(isA(DataException.class));
- thrown.expectMessage("org.hibernate.exception.DataException: could not prepare statement");
+ thrown.expectMessage("could not prepare statement");
Session session = sessionFactory.openSession();
NativeQuery query = session.createNativeQuery("select * from PRODUCT where id='wrongTypeId'", Product.class);
@@ -330,9 +327,8 @@ public class HibernateExceptionUnitTest {
@Test
public void whenUpdatingNonExistingObject_thenStaleStateException() {
- thrown.expect(isA(OptimisticLockException.class));
- thrown.expectMessage("Row was updated or deleted by another transaction");
- thrown.expectCause(isA(StaleObjectStateException.class));
+ thrown.expectCause(isA(StaleStateException.class));
+ thrown.expectMessage("Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; statement executed: update PRODUCT set description=?, name=? where id=?");
Session session = null;
Transaction transaction = null;
@@ -356,7 +352,8 @@ public class HibernateExceptionUnitTest {
@Test
public void givenTxnMarkedRollbackOnly_whenCommitted_thenTransactionException() {
- thrown.expect(isA(TransactionException.class));
+ thrown.expect(isA(IllegalStateException.class));
+ thrown.expectMessage("Transaction already active");
Session session = null;
Transaction transaction = null;
@@ -368,6 +365,7 @@ public class HibernateExceptionUnitTest {
product1.setId(15);
product1.setName("Product1");
session.save(product1);
+ transaction = session.beginTransaction();
transaction.setRollbackOnly();
transaction.commit();
diff --git a/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/hibernate/multitenancy/Car.java b/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/hibernate/multitenancy/Car.java
index 1b6cee7e67..3e4895e5e6 100644
--- a/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/hibernate/multitenancy/Car.java
+++ b/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/hibernate/multitenancy/Car.java
@@ -2,9 +2,9 @@ package com.baeldung.hibernate.multitenancy;
import java.io.Serializable;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
@Entity(name = "Car")
@Table(name = "Car")
diff --git a/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/hibernate/multitenancy/MultitenancyIntegrationTest.java b/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/hibernate/multitenancy/MultitenancyIntegrationTest.java
index fdc3f9fa81..2dc94172b1 100644
--- a/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/hibernate/multitenancy/MultitenancyIntegrationTest.java
+++ b/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/hibernate/multitenancy/MultitenancyIntegrationTest.java
@@ -79,9 +79,9 @@ public abstract class MultitenancyIntegrationTest {
private void createCarTable() {
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
- session.createSQLQuery("drop table Car if exists")
+ session.createNativeQuery("drop table Car if exists")
.executeUpdate();
- session.createSQLQuery("create table Car (brand varchar(255) primary key)")
+ session.createNativeQuery("create table Car (brand varchar(255) primary key)")
.executeUpdate();
tx.commit();
}
diff --git a/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/hibernate/multitenancy/database/DatabaseApproachMultitenancyIntegrationTest.java b/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/hibernate/multitenancy/database/DatabaseApproachMultitenancyIntegrationTest.java
index 92f477a646..904805f2ce 100644
--- a/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/hibernate/multitenancy/database/DatabaseApproachMultitenancyIntegrationTest.java
+++ b/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/hibernate/multitenancy/database/DatabaseApproachMultitenancyIntegrationTest.java
@@ -1,7 +1,5 @@
package com.baeldung.hibernate.multitenancy.database;
-import java.io.IOException;
-
import org.junit.Test;
import com.baeldung.hibernate.multitenancy.MultitenancyIntegrationTest;
@@ -14,7 +12,7 @@ public class DatabaseApproachMultitenancyIntegrationTest extends MultitenancyInt
}
@Test
- public void givenDatabaseApproach_whenAddingEntries_thenOnlyAddedToConcreteDatabase() throws IOException {
+ public void givenDatabaseApproach_whenAddingEntries_thenOnlyAddedToConcreteDatabase() {
whenCurrentTenantIs(TenantIdNames.MYDB1);
whenAddCar("myCar");
thenCarFound("myCar");
diff --git a/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/hibernate/multitenancy/database/MapMultiTenantConnectionProvider.java b/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/hibernate/multitenancy/database/MapMultiTenantConnectionProvider.java
index eb1f410622..47abf6ff85 100644
--- a/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/hibernate/multitenancy/database/MapMultiTenantConnectionProvider.java
+++ b/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/hibernate/multitenancy/database/MapMultiTenantConnectionProvider.java
@@ -34,8 +34,13 @@ public class MapMultiTenantConnectionProvider extends AbstractMultiTenantConnect
private void initConnectionProviderForTenant(String tenantId) throws IOException {
Properties properties = new Properties();
properties.load(getClass().getResourceAsStream(String.format("/hibernate-database-%s.properties", tenantId)));
+ Map configProperties = new HashMap<>();
+ for (String key : properties.stringPropertyNames()) {
+ String value = properties.getProperty(key);
+ configProperties.put(key, value);
+ }
DriverManagerConnectionProviderImpl connectionProvider = new DriverManagerConnectionProviderImpl();
- connectionProvider.configure(properties);
+ connectionProvider.configure(configProperties);
this.connectionProviderMap.put(tenantId, connectionProvider);
}
diff --git a/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/hibernate/multitenancy/schema/SchemaMultiTenantConnectionProvider.java b/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/hibernate/multitenancy/schema/SchemaMultiTenantConnectionProvider.java
index 601eba651c..67b838fdf1 100644
--- a/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/hibernate/multitenancy/schema/SchemaMultiTenantConnectionProvider.java
+++ b/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/hibernate/multitenancy/schema/SchemaMultiTenantConnectionProvider.java
@@ -3,6 +3,8 @@ package com.baeldung.hibernate.multitenancy.schema;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.Map;
import java.util.Properties;
import org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl;
@@ -39,9 +41,14 @@ public class SchemaMultiTenantConnectionProvider extends AbstractMultiTenantConn
private ConnectionProvider initConnectionProvider() throws IOException {
Properties properties = new Properties();
properties.load(getClass().getResourceAsStream("/hibernate-schema-multitenancy.properties"));
+ Map configProperties = new HashMap<>();
+ for (String key : properties.stringPropertyNames()) {
+ String value = properties.getProperty(key);
+ configProperties.put(key, value);
+ }
DriverManagerConnectionProviderImpl connectionProvider = new DriverManagerConnectionProviderImpl();
- connectionProvider.configure(properties);
+ connectionProvider.configure(configProperties);
return connectionProvider;
}
diff --git a/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/persistence/save/SaveMethodsIntegrationTest.java b/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/persistence/save/SaveMethodsIntegrationTest.java
index 8c571428b4..c3d2362339 100644
--- a/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/persistence/save/SaveMethodsIntegrationTest.java
+++ b/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/persistence/save/SaveMethodsIntegrationTest.java
@@ -7,7 +7,7 @@ import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
-import javax.persistence.PersistenceException;
+import jakarta.persistence.PersistenceException;
import org.hibernate.HibernateException;
import org.hibernate.Session;
diff --git a/persistence-modules/hibernate-enterprise/src/test/resources/hibernate-exception.properties b/persistence-modules/hibernate-enterprise/src/test/resources/hibernate-exception.properties
index e08a23166d..1e086f60d4 100644
--- a/persistence-modules/hibernate-enterprise/src/test/resources/hibernate-exception.properties
+++ b/persistence-modules/hibernate-enterprise/src/test/resources/hibernate-exception.properties
@@ -12,5 +12,3 @@ hibernate.c3p0.min_size=5
hibernate.c3p0.max_size=20
hibernate.c3p0.acquire_increment=5
hibernate.c3p0.timeout=1800
-
-hibernate.transaction.factory_class=org.hibernate.transaction.JTATransactionFactory
diff --git a/persistence-modules/hibernate-enterprise/src/test/resources/hibernate-spatial.properties b/persistence-modules/hibernate-enterprise/src/test/resources/hibernate-spatial.properties
index c16666cbf5..e156965ce7 100644
--- a/persistence-modules/hibernate-enterprise/src/test/resources/hibernate-spatial.properties
+++ b/persistence-modules/hibernate-enterprise/src/test/resources/hibernate-spatial.properties
@@ -4,7 +4,7 @@ hibernate.connection.username=sa
hibernate.connection.autocommit=true
jdbc.password=
-hibernate.dialect=org.hibernate.spatial.dialect.h2geodb.GeoDBDialect
+hibernate.dialect=org.hibernate.dialect.H2Dialect
hibernate.show_sql=true
hibernate.hbm2ddl.auto=create-drop
diff --git a/persistence-modules/hibernate-mapping-2/README.md b/persistence-modules/hibernate-mapping-2/README.md
index 4fba6691cf..36c9f8c304 100644
--- a/persistence-modules/hibernate-mapping-2/README.md
+++ b/persistence-modules/hibernate-mapping-2/README.md
@@ -6,3 +6,4 @@ This module contains articles about Hibernate Mappings.
- [Hibernate Many to Many Annotation Tutorial](https://www.baeldung.com/hibernate-many-to-many)
- [Boolean Converters in Hibernate 6](https://www.baeldung.com/java-hibernate-6-boolean-converters)
+- [Generate UUIDs as Primary Keys With Hibernate](https://www.baeldung.com/java-hibernate-uuid-primary-key)
diff --git a/persistence-modules/hibernate-mapping/pom.xml b/persistence-modules/hibernate-mapping/pom.xml
index 506283a4fb..1e3dc8be5f 100644
--- a/persistence-modules/hibernate-mapping/pom.xml
+++ b/persistence-modules/hibernate-mapping/pom.xml
@@ -26,7 +26,7 @@
com.vladmihalcea
- hibernate-types-52
+ hibernate-types-60
${hibernate-types.version}
@@ -41,9 +41,9 @@
${hibernate-validator.version}
- org.glassfish
- javax.el
- ${org.glassfish.javax.el.version}
+ org.glassfish.expressly
+ expressly
+ 5.0.0
javax.money
@@ -66,16 +66,27 @@
commons-io
${commons-io.version}
+
+ com.fasterxml.jackson.module
+ jackson-module-jakarta-xmlbind-annotations
+ ${jackson-module-jakarta-xmlbind-annotation}
+
+
+ org.openjdk.nashorn
+ nashorn-core
+ 15.4
+
- 1.4.197
- 5.4.12.Final
- 2.10.4
- 6.0.16.Final
+ 2.1.214
+ 6.1.7.Final
+ 2.21.1
+ 8.0.0.Final
3.0.1-b11
- 1.0.3
- 1.3
+ 1.1
+ 1.4.2
+ 2.14.2
\ No newline at end of file
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/HibernateUtil.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/HibernateUtil.java
index fbd8bd487b..cbd73832a4 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/HibernateUtil.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/HibernateUtil.java
@@ -21,6 +21,7 @@ import com.baeldung.hibernate.pojo.inheritance.Animal;
import com.baeldung.hibernate.pojo.inheritance.Bag;
import com.baeldung.hibernate.pojo.inheritance.Book;
import com.baeldung.hibernate.pojo.inheritance.Car;
+import com.baeldung.hibernate.pojo.inheritance.Laptop;
import com.baeldung.hibernate.pojo.inheritance.MyEmployee;
import com.baeldung.hibernate.pojo.inheritance.MyProduct;
import com.baeldung.hibernate.pojo.inheritance.Pen;
@@ -79,6 +80,7 @@ public class HibernateUtil {
metadataSources.addAnnotatedClass(com.baeldung.hibernate.entities.Department.class);
metadataSources.addAnnotatedClass(Animal.class);
metadataSources.addAnnotatedClass(Bag.class);
+ metadataSources.addAnnotatedClass(Laptop.class);
metadataSources.addAnnotatedClass(Book.class);
metadataSources.addAnnotatedClass(Car.class);
metadataSources.addAnnotatedClass(MyEmployee.class);
@@ -86,7 +88,6 @@ public class HibernateUtil {
metadataSources.addAnnotatedClass(Pen.class);
metadataSources.addAnnotatedClass(Pet.class);
metadataSources.addAnnotatedClass(Vehicle.class);
-
Metadata metadata = metadataSources.getMetadataBuilder()
.build();
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/arraymapping/CustomIntegerArrayType.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/arraymapping/CustomIntegerArrayType.java
index 1155a59a57..5d3e22bf05 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/arraymapping/CustomIntegerArrayType.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/arraymapping/CustomIntegerArrayType.java
@@ -7,60 +7,57 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.Arrays;
-import java.util.Objects;
-import org.hibernate.HibernateException;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.usertype.UserType;
-public class CustomIntegerArrayType implements UserType {
+public class CustomIntegerArrayType implements UserType {
@Override
- public int[] sqlTypes() {
- return new int[]{Types.ARRAY};
+ public int getSqlType() {
+ return Types.ARRAY;
}
@Override
- public Class returnedClass() {
+ public Class returnedClass() {
return Integer[].class;
}
@Override
- public boolean equals(Object x, Object y) throws HibernateException {
+ public boolean equals(Integer[] x, Integer[] y) {
if (x instanceof Integer[] && y instanceof Integer[]) {
- return Arrays.deepEquals((Integer[])x, (Integer[])y);
+ return Arrays.deepEquals(x, y);
} else {
return false;
}
}
@Override
- public int hashCode(Object x) throws HibernateException {
- return Arrays.hashCode((Integer[])x);
+ public int hashCode(Integer[] x) {
+ return Arrays.hashCode(x);
}
@Override
- public Object nullSafeGet(ResultSet rs, String[] names, SharedSessionContractImplementor session, Object owner)
- throws HibernateException, SQLException {
- Array array = rs.getArray(names[0]);
- return array != null ? array.getArray() : null;
+ public Integer[] nullSafeGet(ResultSet rs, int position, SharedSessionContractImplementor session, Object owner) throws SQLException {
+ Array array = rs.getArray(position);
+ return array != null ? (Integer[]) array.getArray() : null;
}
@Override
- public void nullSafeSet(PreparedStatement st, Object value, int index, SharedSessionContractImplementor session)
- throws HibernateException, SQLException {
- if (value != null && st != null) {
- Array array = session.connection().createArrayOf("int", (Integer[])value);
- st.setArray(index, array);
- } else {
- st.setNull(index, sqlTypes()[0]);
+ public void nullSafeSet(PreparedStatement st, Integer[] value, int index, SharedSessionContractImplementor session) throws SQLException {
+ if (st != null) {
+ if (value != null) {
+ Array array = session.getJdbcConnectionAccess().obtainConnection().createArrayOf("int", value);
+ st.setArray(index, array);
+ } else {
+ st.setNull(index, Types.ARRAY);
+ }
}
}
@Override
- public Object deepCopy(Object value) throws HibernateException {
- Integer[] arr = (Integer[]) value;
- return arr != null ? Arrays.copyOf(arr, arr.length) : null;
+ public Integer[] deepCopy(Integer[] value) {
+ return value != null ? Arrays.copyOf(value, value.length) : null;
}
@Override
@@ -69,18 +66,18 @@ public class CustomIntegerArrayType implements UserType {
}
@Override
- public Serializable disassemble(Object value) throws HibernateException {
- return (Serializable) value;
+ public Serializable disassemble(Integer[] value) {
+ return value;
}
@Override
- public Object assemble(Serializable cached, Object owner) throws HibernateException {
- return cached;
+ public Integer[] assemble(Serializable cached, Object owner) {
+ return (Integer[]) cached;
}
@Override
- public Object replace(Object original, Object target, Object owner) throws HibernateException {
- return original;
+ public Integer[] replace(Integer[] detached, Integer[] managed, Object owner) {
+ return detached;
}
}
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/arraymapping/CustomStringArrayType.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/arraymapping/CustomStringArrayType.java
index ce50196513..31a082fb05 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/arraymapping/CustomStringArrayType.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/arraymapping/CustomStringArrayType.java
@@ -7,60 +7,57 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.Arrays;
-import java.util.Objects;
-import org.hibernate.HibernateException;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.usertype.UserType;
-public class CustomStringArrayType implements UserType {
+public class CustomStringArrayType implements UserType {
@Override
- public int[] sqlTypes() {
- return new int[]{Types.ARRAY};
+ public int getSqlType() {
+ return Types.ARRAY;
}
@Override
- public Class returnedClass() {
+ public Class returnedClass() {
return String[].class;
}
@Override
- public boolean equals(Object x, Object y) throws HibernateException {
+ public boolean equals(String[] x, String[] y) {
if (x instanceof String[] && y instanceof String[]) {
- return Arrays.deepEquals((String[])x, (String[])y);
+ return Arrays.deepEquals(x, y);
} else {
return false;
}
}
@Override
- public int hashCode(Object x) throws HibernateException {
- return Arrays.hashCode((String[])x);
+ public int hashCode(String[] x) {
+ return Arrays.hashCode(x);
}
@Override
- public Object nullSafeGet(ResultSet rs, String[] names, SharedSessionContractImplementor session, Object owner)
- throws HibernateException, SQLException {
- Array array = rs.getArray(names[0]);
- return array != null ? array.getArray() : null;
+ public String[] nullSafeGet(ResultSet rs, int position, SharedSessionContractImplementor session, Object owner) throws SQLException {
+ Array array = rs.getArray(position);
+ return array != null ? (String[]) array.getArray() : null;
}
@Override
- public void nullSafeSet(PreparedStatement st, Object value, int index, SharedSessionContractImplementor session)
- throws HibernateException, SQLException {
- if (value != null && st != null) {
- Array array = session.connection().createArrayOf("text", (String[])value);
- st.setArray(index, array);
- } else {
- st.setNull(index, sqlTypes()[0]);
+ public void nullSafeSet(PreparedStatement st, String[] value, int index, SharedSessionContractImplementor session) throws SQLException {
+ if (st != null) {
+ if (value != null) {
+ Array array = session.getJdbcConnectionAccess().obtainConnection().createArrayOf("text", value);
+ st.setArray(index, array);
+ } else {
+ st.setNull(index, Types.ARRAY);
+ }
}
}
@Override
- public Object deepCopy(Object value) throws HibernateException {
- String[] arr = (String[]) value;
- return arr != null ? Arrays.copyOf(arr, arr.length) : null;
+ public String[] deepCopy(String[] value) {
+ return value != null ? Arrays.copyOf(value, value.length) : null;
}
@Override
@@ -69,18 +66,18 @@ public class CustomStringArrayType implements UserType {
}
@Override
- public Serializable disassemble(Object value) throws HibernateException {
- return (Serializable) value;
+ public Serializable disassemble(String[] value) {
+ return value;
}
@Override
- public Object assemble(Serializable cached, Object owner) throws HibernateException {
- return cached;
+ public String[] assemble(Serializable cached, Object owner) {
+ return (String[]) cached;
}
@Override
- public Object replace(Object original, Object target, Object owner) throws HibernateException {
- return original;
+ public String[] replace(String[] detached, String[] managed, Object owner) {
+ return detached;
}
}
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/arraymapping/User.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/arraymapping/User.java
index 018bedc349..81f2ee89f7 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/arraymapping/User.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/arraymapping/User.java
@@ -1,21 +1,13 @@
package com.baeldung.hibernate.arraymapping;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
import org.hibernate.annotations.Type;
import com.vladmihalcea.hibernate.type.array.StringArrayType;
-import org.hibernate.annotations.*;
-
-@TypeDefs({
- @TypeDef(
- name = "string-array",
- typeClass = StringArrayType.class
- )
-})
@Entity
public class User {
@@ -25,14 +17,14 @@ public class User {
private String name;
@Column(columnDefinition = "text[]")
- @Type(type = "com.baeldung.hibernate.arraymapping.CustomStringArrayType")
+ @Type(value = com.baeldung.hibernate.arraymapping.CustomStringArrayType.class)
private String[] roles;
@Column(columnDefinition = "int[]")
- @Type(type = "com.baeldung.hibernate.arraymapping.CustomIntegerArrayType")
+ @Type(value = com.baeldung.hibernate.arraymapping.CustomIntegerArrayType.class)
private Integer[] locations;
- @Type(type = "string-array")
+ @Type(StringArrayType.class)
@Column(
name = "phone_numbers",
columnDefinition = "text[]"
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/basicannotation/Course.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/basicannotation/Course.java
index e816fb0176..ca77888f9b 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/basicannotation/Course.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/basicannotation/Course.java
@@ -1,10 +1,9 @@
package com.baeldung.hibernate.basicannotation;
-import javax.persistence.Basic;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
+import jakarta.persistence.Basic;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.Id;
@Entity
public class Course {
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/entities/Department.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/entities/Department.java
index ff94f4f849..39e69a2b1c 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/entities/Department.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/entities/Department.java
@@ -2,7 +2,7 @@ package com.baeldung.hibernate.entities;
import java.util.List;
-import javax.persistence.*;
+import jakarta.persistence.*;
@Entity
public class Department {
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/entities/DeptEmployee.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/entities/DeptEmployee.java
index 6510e70650..3c4f542ce7 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/entities/DeptEmployee.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/entities/DeptEmployee.java
@@ -1,13 +1,13 @@
package com.baeldung.hibernate.entities;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.ManyToOne;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.ManyToOne;
@org.hibernate.annotations.NamedQueries({ @org.hibernate.annotations.NamedQuery(name = "DeptEmployee_FindByEmployeeNumber", query = "from DeptEmployee where employeeNumber = :employeeNo"),
- @org.hibernate.annotations.NamedQuery(name = "DeptEmployee_FindAllByDesgination", query = "from DeptEmployee where designation = :designation"),
+ @org.hibernate.annotations.NamedQuery(name = "DeptEmployee_FindAllByDesgination", query = "from DeptEmployee where employeeNumber = :designation"),
@org.hibernate.annotations.NamedQuery(name = "DeptEmployee_UpdateEmployeeDepartment", query = "Update DeptEmployee set department = :newDepartment where employeeNumber = :employeeNo"),
@org.hibernate.annotations.NamedQuery(name = "DeptEmployee_FindAllByDepartment", query = "from DeptEmployee where department = :department", timeout = 1, fetchSize = 10) })
@org.hibernate.annotations.NamedNativeQueries({ @org.hibernate.annotations.NamedNativeQuery(name = "DeptEmployee_FindByEmployeeName", query = "select * from deptemployee emp where name=:name", resultClass = DeptEmployee.class),
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/fetchMode/Customer.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/fetchMode/Customer.java
index 5589601da8..b8937c6692 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/fetchMode/Customer.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/fetchMode/Customer.java
@@ -3,10 +3,10 @@ package com.baeldung.hibernate.fetchMode;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.OneToMany;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.OneToMany;
import java.util.HashSet;
import java.util.Set;
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/fetchMode/Order.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/fetchMode/Order.java
index aa9c517321..5be65bac0d 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/fetchMode/Order.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/fetchMode/Order.java
@@ -1,6 +1,6 @@
package com.baeldung.hibernate.fetchMode;
-import javax.persistence.*;
+import jakarta.persistence.*;
@Entity
public class Order {
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/lob/model/User.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/lob/model/User.java
index 21f725b388..3c3b748990 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/lob/model/User.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/lob/model/User.java
@@ -1,13 +1,13 @@
package com.baeldung.hibernate.lob.model;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Lob;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Lob;
+import jakarta.persistence.Table;
@Entity
-@Table(name="user")
+@Table(name="users")
public class User {
@Id
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkey/Item.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkey/Item.java
index 385ffe93ea..ff8115f5d9 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkey/Item.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkey/Item.java
@@ -2,15 +2,15 @@ package com.baeldung.hibernate.persistmaps.mapkey;
import com.baeldung.hibernate.persistmaps.ItemType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import jakarta.persistence.Temporal;
+import jakarta.persistence.TemporalType;
import java.util.Date;
import java.util.Objects;
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkey/Order.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkey/Order.java
index 8409cacd6b..e42ceda5de 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkey/Order.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkey/Order.java
@@ -1,15 +1,15 @@
package com.baeldung.hibernate.persistmaps.mapkey;
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.JoinTable;
-import javax.persistence.MapKey;
-import javax.persistence.OneToMany;
-import javax.persistence.Table;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.JoinTable;
+import jakarta.persistence.MapKey;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.Table;
import java.util.Map;
@Entity
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkey/User.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkey/User.java
index b2ee7e85fe..0a9694f43c 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkey/User.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkey/User.java
@@ -1,16 +1,15 @@
package com.baeldung.hibernate.persistmaps.mapkey;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.validation.constraints.Size;
-import javax.money.MonetaryAmount;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import jakarta.validation.constraints.Size;
import org.hibernate.validator.constraints.Length;
-import org.hibernate.validator.constraints.CreditCardNumber;
-import org.hibernate.validator.constraints.Currency;
@Entity
+@Table(name="users2")
public class User {
@Id
@Column(length = 3)
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkeycolumn/Order.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkeycolumn/Order.java
index fa092060da..3d24c743d7 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkeycolumn/Order.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkeycolumn/Order.java
@@ -1,14 +1,14 @@
package com.baeldung.hibernate.persistmaps.mapkeycolumn;
-import javax.persistence.CollectionTable;
-import javax.persistence.Column;
-import javax.persistence.ElementCollection;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.MapKeyColumn;
-import javax.persistence.Table;
+import jakarta.persistence.CollectionTable;
+import jakarta.persistence.Column;
+import jakarta.persistence.ElementCollection;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.MapKeyColumn;
+import jakarta.persistence.Table;
import java.util.Map;
@Entity
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkeyenumerated/Order.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkeyenumerated/Order.java
index e1f62599b8..19622ea01d 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkeyenumerated/Order.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkeyenumerated/Order.java
@@ -3,17 +3,17 @@ package com.baeldung.hibernate.persistmaps.mapkeyenumerated;
import com.baeldung.hibernate.persistmaps.ItemType;
import com.baeldung.hibernate.persistmaps.mapkey.Item;
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.JoinTable;
-import javax.persistence.MapKeyEnumerated;
-import javax.persistence.OneToMany;
-import javax.persistence.Table;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.JoinTable;
+import jakarta.persistence.MapKeyEnumerated;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.Table;
import java.util.Map;
@Entity
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkeyjoincolumn/Item.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkeyjoincolumn/Item.java
index 97bbd5b539..9ed58305da 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkeyjoincolumn/Item.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkeyjoincolumn/Item.java
@@ -2,18 +2,18 @@ package com.baeldung.hibernate.persistmaps.mapkeyjoincolumn;
import com.baeldung.hibernate.persistmaps.ItemType;
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.Table;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.Table;
+import jakarta.persistence.Temporal;
+import jakarta.persistence.TemporalType;
import java.util.Date;
import java.util.Objects;
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkeyjoincolumn/Order.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkeyjoincolumn/Order.java
index d680d84501..9d20237860 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkeyjoincolumn/Order.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkeyjoincolumn/Order.java
@@ -1,15 +1,15 @@
package com.baeldung.hibernate.persistmaps.mapkeyjoincolumn;
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.JoinTable;
-import javax.persistence.MapKeyJoinColumn;
-import javax.persistence.OneToMany;
-import javax.persistence.Table;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.JoinTable;
+import jakarta.persistence.MapKeyJoinColumn;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.Table;
import java.util.Map;
@Entity
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkeyjoincolumn/Seller.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkeyjoincolumn/Seller.java
index 15b08e9fe6..ca06db241e 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkeyjoincolumn/Seller.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkeyjoincolumn/Seller.java
@@ -1,10 +1,10 @@
package com.baeldung.hibernate.persistmaps.mapkeyjoincolumn;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
import java.util.Objects;
@Entity
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkeytemporal/Order.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkeytemporal/Order.java
index be602c1e9f..920d693d16 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkeytemporal/Order.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkeytemporal/Order.java
@@ -2,17 +2,17 @@ package com.baeldung.hibernate.persistmaps.mapkeytemporal;
import com.baeldung.hibernate.persistmaps.mapkey.Item;
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.JoinTable;
-import javax.persistence.MapKeyTemporal;
-import javax.persistence.OneToMany;
-import javax.persistence.Table;
-import javax.persistence.TemporalType;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.JoinTable;
+import jakarta.persistence.MapKeyTemporal;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.Table;
+import jakarta.persistence.TemporalType;
import java.util.Date;
import java.util.Map;
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/Employee.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/Employee.java
index e9732b2b67..7d8a254eec 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/Employee.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/Employee.java
@@ -2,15 +2,15 @@ package com.baeldung.hibernate.pojo;
import org.hibernate.annotations.*;
-import javax.persistence.Entity;
-import javax.persistence.*;
+import jakarta.persistence.Entity;
+import jakarta.persistence.*;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
@Entity
@Where(clause = "deleted = false")
-@FilterDef(name = "incomeLevelFilter", parameters = @ParamDef(name = "incomeLimit", type = "int"))
+@FilterDef(name = "incomeLevelFilter", parameters = @ParamDef(name = "incomeLimit", type = Integer.class))
@Filter(name = "incomeLevelFilter", condition = "grossIncome > :incomeLimit")
public class Employee implements Serializable {
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/EntityDescription.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/EntityDescription.java
index 131bb73a80..29befd80f2 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/EntityDescription.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/EntityDescription.java
@@ -1,8 +1,11 @@
package com.baeldung.hibernate.pojo;
import org.hibernate.annotations.Any;
+import org.hibernate.annotations.AnyDiscriminator;
+import org.hibernate.annotations.AnyDiscriminatorValue;
+import org.hibernate.annotations.AnyKeyJavaClass;
-import javax.persistence.*;
+import jakarta.persistence.*;
import java.io.Serializable;
@Entity
@@ -14,10 +17,12 @@ public class EntityDescription implements Serializable {
private String description;
- @Any(
- metaDef = "EntityDescriptionMetaDef",
- metaColumn = @Column(name = "entity_type")
- )
+ @Any
+ @AnyDiscriminator(DiscriminatorType.STRING)
+ @AnyDiscriminatorValue(discriminator = "S", entity = Employee.class)
+ @AnyDiscriminatorValue(discriminator = "I", entity = Phone.class)
+ @AnyKeyJavaClass(Integer.class)
+ @Column(name = "entity_type")
@JoinColumn(name = "entity_id")
private Serializable entity;
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/Phone.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/Phone.java
index d923bda5de..e173aa8b47 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/Phone.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/Phone.java
@@ -1,9 +1,9 @@
package com.baeldung.hibernate.pojo;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
import java.io.Serializable;
@Entity
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/TemporalValues.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/TemporalValues.java
index f3fe095cae..0c022884eb 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/TemporalValues.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/TemporalValues.java
@@ -1,7 +1,6 @@
package com.baeldung.hibernate.pojo;
-import javax.persistence.*;
-import java.io.Serializable;
+import jakarta.persistence.*;
import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;
@@ -9,7 +8,7 @@ import java.time.*;
import java.util.Calendar;
@Entity
-public class TemporalValues implements Serializable {
+public class TemporalValues {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@@ -48,7 +47,7 @@ public class TemporalValues implements Serializable {
private java.time.LocalDate localDate;
@Basic
- private java.time.LocalTime localTime;
+ private java.time.LocalTime localTimeField;
@Basic
private java.time.OffsetTime offsetTime;
@@ -146,11 +145,11 @@ public class TemporalValues implements Serializable {
}
public LocalTime getLocalTime() {
- return localTime;
+ return localTimeField;
}
public void setLocalTime(LocalTime localTime) {
- this.localTime = localTime;
+ this.localTimeField = localTime;
}
public OffsetTime getOffsetTime() {
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Animal.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Animal.java
index 6fe7f915fc..c44a542b60 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Animal.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Animal.java
@@ -1,9 +1,9 @@
package com.baeldung.hibernate.pojo.inheritance;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Inheritance;
-import javax.persistence.InheritanceType;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Inheritance;
+import jakarta.persistence.InheritanceType;
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Bag.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Bag.java
index fa6e1b4bef..707e387866 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Bag.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Bag.java
@@ -1,7 +1,7 @@
package com.baeldung.hibernate.pojo.inheritance;
-import javax.persistence.Entity;
-import javax.persistence.Id;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
import org.hibernate.annotations.Polymorphism;
import org.hibernate.annotations.PolymorphismType;
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Book.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Book.java
index 36ca8dd77c..286a30cc14 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Book.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Book.java
@@ -1,7 +1,7 @@
package com.baeldung.hibernate.pojo.inheritance;
-import javax.persistence.DiscriminatorValue;
-import javax.persistence.Entity;
+import jakarta.persistence.DiscriminatorValue;
+import jakarta.persistence.Entity;
@Entity
@DiscriminatorValue("1")
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Car.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Car.java
index 49d1f7749a..987e299625 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Car.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Car.java
@@ -1,6 +1,6 @@
package com.baeldung.hibernate.pojo.inheritance;
-import javax.persistence.Entity;
+import jakarta.persistence.Entity;
@Entity
public class Car extends Vehicle {
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Laptop.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Laptop.java
new file mode 100644
index 0000000000..cced365d78
--- /dev/null
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Laptop.java
@@ -0,0 +1,39 @@
+package com.baeldung.hibernate.pojo.inheritance;
+
+import org.hibernate.annotations.Polymorphism;
+import org.hibernate.annotations.PolymorphismType;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+
+@Entity
+@Polymorphism(type = PolymorphismType.IMPLICIT)
+public class Laptop implements Item {
+
+ @Id
+ private Long id;
+
+ private String type;
+
+ public Laptop(Long id, String type) {
+ this.id = id;
+ this.type = type;
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+}
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/MyEmployee.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/MyEmployee.java
index 9a6bce16cf..96958c6e28 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/MyEmployee.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/MyEmployee.java
@@ -1,6 +1,6 @@
package com.baeldung.hibernate.pojo.inheritance;
-import javax.persistence.Entity;
+import jakarta.persistence.Entity;
@Entity
public class MyEmployee extends Person {
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/MyProduct.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/MyProduct.java
index 13f04d8904..62214fc16e 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/MyProduct.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/MyProduct.java
@@ -1,13 +1,11 @@
package com.baeldung.hibernate.pojo.inheritance;
-import javax.persistence.DiscriminatorColumn;
-import javax.persistence.DiscriminatorType;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Inheritance;
-import javax.persistence.InheritanceType;
-
-import org.hibernate.annotations.DiscriminatorFormula;
+import jakarta.persistence.DiscriminatorColumn;
+import jakarta.persistence.DiscriminatorType;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Inheritance;
+import jakarta.persistence.InheritanceType;
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Pen.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Pen.java
index 32b77e52af..2382cab405 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Pen.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Pen.java
@@ -1,7 +1,7 @@
package com.baeldung.hibernate.pojo.inheritance;
-import javax.persistence.DiscriminatorValue;
-import javax.persistence.Entity;
+import jakarta.persistence.DiscriminatorValue;
+import jakarta.persistence.Entity;
@Entity
@DiscriminatorValue("2")
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Person.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Person.java
index 99084b88af..9bf8ac254c 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Person.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Person.java
@@ -1,7 +1,7 @@
package com.baeldung.hibernate.pojo.inheritance;
-import javax.persistence.Id;
-import javax.persistence.MappedSuperclass;
+import jakarta.persistence.Id;
+import jakarta.persistence.MappedSuperclass;
@MappedSuperclass
public class Person {
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Pet.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Pet.java
index 870b3cd684..b359eb3a21 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Pet.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Pet.java
@@ -1,7 +1,7 @@
package com.baeldung.hibernate.pojo.inheritance;
-import javax.persistence.Entity;
-import javax.persistence.PrimaryKeyJoinColumn;
+import jakarta.persistence.Entity;
+import jakarta.persistence.PrimaryKeyJoinColumn;
@Entity
@PrimaryKeyJoinColumn(name = "petId")
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Vehicle.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Vehicle.java
index b2a920573e..9bdde8c33b 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Vehicle.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/inheritance/Vehicle.java
@@ -1,9 +1,9 @@
package com.baeldung.hibernate.pojo.inheritance;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Inheritance;
-import javax.persistence.InheritanceType;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Inheritance;
+import jakarta.persistence.InheritanceType;
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/package-info.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/package-info.java
deleted file mode 100644
index 992cda7c1d..0000000000
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/pojo/package-info.java
+++ /dev/null
@@ -1,9 +0,0 @@
-@AnyMetaDef(name = "EntityDescriptionMetaDef", metaType = "string", idType = "int",
- metaValues = {
- @MetaValue(value = "Employee", targetEntity = Employee.class),
- @MetaValue(value = "Phone", targetEntity = Phone.class)
- })
-package com.baeldung.hibernate.pojo;
-
-import org.hibernate.annotations.AnyMetaDef;
-import org.hibernate.annotations.MetaValue;
\ No newline at end of file
diff --git a/persistence-modules/hibernate-mapping/src/test/java/com/baeldung/hibernate/DynamicMappingIntegrationTest.java b/persistence-modules/hibernate-mapping/src/test/java/com/baeldung/hibernate/DynamicMappingIntegrationTest.java
index 7a112200b5..833c5cc3ff 100644
--- a/persistence-modules/hibernate-mapping/src/test/java/com/baeldung/hibernate/DynamicMappingIntegrationTest.java
+++ b/persistence-modules/hibernate-mapping/src/test/java/com/baeldung/hibernate/DynamicMappingIntegrationTest.java
@@ -119,8 +119,8 @@ public class DynamicMappingIntegrationTest {
assertThat(employees).hasSize(2);
- Employee employee = session.get(Employee.class, 1);
- assertThat(employee.getGrossIncome()).isEqualTo(10_000);
+ Employee employee = session.get(Employee.class, 2);
+ assertThat(employee.getGrossIncome()).isEqualTo(12_000);
session.disableFilter("incomeLevelFilter");
employees = session.createQuery("from Employee").getResultList();
diff --git a/persistence-modules/hibernate-mapping/src/test/java/com/baeldung/hibernate/InheritanceMappingIntegrationTest.java b/persistence-modules/hibernate-mapping/src/test/java/com/baeldung/hibernate/InheritanceMappingIntegrationTest.java
index 0f35dbb8af..7f4cac141c 100644
--- a/persistence-modules/hibernate-mapping/src/test/java/com/baeldung/hibernate/InheritanceMappingIntegrationTest.java
+++ b/persistence-modules/hibernate-mapping/src/test/java/com/baeldung/hibernate/InheritanceMappingIntegrationTest.java
@@ -13,6 +13,7 @@ import org.junit.Test;
import com.baeldung.hibernate.pojo.inheritance.Bag;
import com.baeldung.hibernate.pojo.inheritance.Book;
import com.baeldung.hibernate.pojo.inheritance.Car;
+import com.baeldung.hibernate.pojo.inheritance.Laptop;
import com.baeldung.hibernate.pojo.inheritance.MyEmployee;
import com.baeldung.hibernate.pojo.inheritance.Pen;
import com.baeldung.hibernate.pojo.inheritance.Pet;
@@ -81,9 +82,12 @@ public class InheritanceMappingIntegrationTest {
public void givenSubclasses_whenQueryNonMappedInterface_thenOk() {
Bag bag = new Bag(1, "large");
session.save(bag);
+
+ Laptop laptop = new Laptop(1L, "Dell");
+ session.save(laptop);
assertThat(session.createQuery("from com.baeldung.hibernate.pojo.inheritance.Item")
.getResultList()
- .size()).isEqualTo(0);
+ .size()).isEqualTo(1);
}
}
diff --git a/persistence-modules/hibernate-mapping/src/test/java/com/baeldung/hibernate/basicannotation/BasicAnnotationIntegrationTest.java b/persistence-modules/hibernate-mapping/src/test/java/com/baeldung/hibernate/basicannotation/BasicAnnotationIntegrationTest.java
index 930bea60c5..6a9a4f095b 100644
--- a/persistence-modules/hibernate-mapping/src/test/java/com/baeldung/hibernate/basicannotation/BasicAnnotationIntegrationTest.java
+++ b/persistence-modules/hibernate-mapping/src/test/java/com/baeldung/hibernate/basicannotation/BasicAnnotationIntegrationTest.java
@@ -2,7 +2,7 @@ package com.baeldung.hibernate.basicannotation;
import java.io.IOException;
-import javax.persistence.PersistenceException;
+import jakarta.persistence.PersistenceException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
diff --git a/persistence-modules/hibernate-mapping/src/test/java/com/baeldung/hibernate/validation/UserAdditionalValidationUnitTest.java b/persistence-modules/hibernate-mapping/src/test/java/com/baeldung/hibernate/validation/UserAdditionalValidationUnitTest.java
index 0f2a0403e9..17212173ec 100644
--- a/persistence-modules/hibernate-mapping/src/test/java/com/baeldung/hibernate/validation/UserAdditionalValidationUnitTest.java
+++ b/persistence-modules/hibernate-mapping/src/test/java/com/baeldung/hibernate/validation/UserAdditionalValidationUnitTest.java
@@ -7,13 +7,12 @@ import java.math.BigDecimal;
import java.time.Duration;
import java.util.Set;
-import javax.money.CurrencyContextBuilder;
import javax.money.Monetary;
import javax.money.MonetaryAmount;
-import javax.validation.ConstraintViolation;
-import javax.validation.Validation;
-import javax.validation.Validator;
-import javax.validation.ValidatorFactory;
+import jakarta.validation.ConstraintViolation;
+import jakarta.validation.Validation;
+import jakarta.validation.Validator;
+import jakarta.validation.ValidatorFactory;
import org.hibernate.validator.constraints.CodePointLength;
import org.hibernate.validator.constraints.CreditCardNumber;
@@ -21,12 +20,10 @@ import org.hibernate.validator.constraints.Currency;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.LuhnCheck;
import org.hibernate.validator.constraints.Range;
-import org.hibernate.validator.constraints.SafeHtml;
import org.hibernate.validator.constraints.ScriptAssert;
import org.hibernate.validator.constraints.URL;
import org.hibernate.validator.constraints.time.DurationMax;
import org.hibernate.validator.constraints.time.DurationMin;
-import org.javamoney.moneta.CurrencyUnitBuilder;
import org.javamoney.moneta.Money;
import org.junit.BeforeClass;
import org.junit.Test;
diff --git a/persistence-modules/hibernate-mapping/src/test/java/com/baeldung/hibernate/validation/UserValidationUnitTest.java b/persistence-modules/hibernate-mapping/src/test/java/com/baeldung/hibernate/validation/UserValidationUnitTest.java
index e39f324856..495ad657be 100644
--- a/persistence-modules/hibernate-mapping/src/test/java/com/baeldung/hibernate/validation/UserValidationUnitTest.java
+++ b/persistence-modules/hibernate-mapping/src/test/java/com/baeldung/hibernate/validation/UserValidationUnitTest.java
@@ -2,11 +2,11 @@ package com.baeldung.hibernate.validation;
import static org.junit.Assert.assertEquals;
import java.util.Set;
-import javax.persistence.PersistenceException;
-import javax.validation.ConstraintViolation;
-import javax.validation.Validation;
-import javax.validation.Validator;
-import javax.validation.ValidatorFactory;
+import jakarta.persistence.PersistenceException;
+import jakarta.validation.ConstraintViolation;
+import jakarta.validation.Validation;
+import jakarta.validation.Validator;
+import jakarta.validation.ValidatorFactory;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.junit.Before;
diff --git a/persistence-modules/hibernate-queries/pom.xml b/persistence-modules/hibernate-queries/pom.xml
index 68a46b82b1..bb60c7b83a 100644
--- a/persistence-modules/hibernate-queries/pom.xml
+++ b/persistence-modules/hibernate-queries/pom.xml
@@ -85,15 +85,21 @@
${testcontainers.mysql.version}
test
+
+ io.hypersistence
+ hypersistence-utils-hibernate-60
+ 3.3.1
+
- 5.0.2.RELEASE
- 1.10.6.RELEASE
+ 6.0.6
+ 3.0.3
9.0.0.M26
- 6.0.6
- 2.2.3
+ 8.0.32
+ 2.6.0
2.1.214
+ 6.1.7.Final
1.17.6
diff --git a/persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/criteria/model/Employee.java b/persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/criteria/model/Employee.java
index 8771e02e0b..9041c6727c 100644
--- a/persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/criteria/model/Employee.java
+++ b/persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/criteria/model/Employee.java
@@ -1,7 +1,7 @@
package com.baeldung.hibernate.criteria.model;
import java.io.Serializable;
-import javax.persistence.Entity;
+import jakarta.persistence.Entity;
@org.hibernate.annotations.NamedQueries({
@org.hibernate.annotations.NamedQuery(name = "Employee_findByEmployeeId", query = "from Employee where id = :employeeId"),
diff --git a/persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/criteria/view/ApplicationView.java b/persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/criteria/view/ApplicationView.java
index 248f64474a..2b782c2a1d 100644
--- a/persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/criteria/view/ApplicationView.java
+++ b/persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/criteria/view/ApplicationView.java
@@ -12,10 +12,10 @@ package com.baeldung.hibernate.criteria.view;
import java.util.List;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
+import jakarta.persistence.criteria.CriteriaBuilder;
+import jakarta.persistence.criteria.CriteriaQuery;
+import jakarta.persistence.criteria.Predicate;
+import jakarta.persistence.criteria.Root;
import org.hibernate.Session;
import org.hibernate.query.Query;
diff --git a/persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/criteria/view/EmployeeCriteriaQueries.java b/persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/criteria/view/EmployeeCriteriaQueries.java
index f8c525611b..9303fd893e 100644
--- a/persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/criteria/view/EmployeeCriteriaQueries.java
+++ b/persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/criteria/view/EmployeeCriteriaQueries.java
@@ -3,9 +3,9 @@ package com.baeldung.hibernate.criteria.view;
import com.baeldung.hibernate.criteria.model.Employee;
import com.baeldung.hibernate.criteria.util.HibernateUtil;
import java.util.List;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Root;
+import jakarta.persistence.criteria.CriteriaBuilder;
+import jakarta.persistence.criteria.CriteriaQuery;
+import jakarta.persistence.criteria.Root;
import org.hibernate.Session;
import org.hibernate.query.Query;
diff --git a/persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/criteriaquery/Student.java b/persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/criteriaquery/Student.java
index 314e7ca557..af6b561091 100644
--- a/persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/criteriaquery/Student.java
+++ b/persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/criteriaquery/Student.java
@@ -1,11 +1,11 @@
package com.baeldung.hibernate.criteriaquery;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
@Entity
@Table(name = "students")
diff --git a/persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/customtypes/LocalDateStringJavaDescriptor.java b/persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/customtypes/LocalDateStringJavaDescriptor.java
index 56be9e693f..58d8e8628a 100644
--- a/persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/customtypes/LocalDateStringJavaDescriptor.java
+++ b/persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/customtypes/LocalDateStringJavaDescriptor.java
@@ -1,14 +1,15 @@
package com.baeldung.hibernate.customtypes;
-import org.hibernate.type.LocalDateType;
-import org.hibernate.type.descriptor.WrapperOptions;
-import org.hibernate.type.descriptor.java.AbstractTypeDescriptor;
-import org.hibernate.type.descriptor.java.ImmutableMutabilityPlan;
-import org.hibernate.type.descriptor.java.MutabilityPlan;
import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
-public class LocalDateStringJavaDescriptor extends AbstractTypeDescriptor {
+import org.hibernate.type.descriptor.WrapperOptions;
+import org.hibernate.type.descriptor.java.ImmutableMutabilityPlan;
+
+import io.hypersistence.utils.hibernate.type.array.internal.AbstractArrayTypeDescriptor;
+
+public class LocalDateStringJavaDescriptor extends AbstractArrayTypeDescriptor {
public static final LocalDateStringJavaDescriptor INSTANCE = new LocalDateStringJavaDescriptor();
@@ -18,12 +19,12 @@ public class LocalDateStringJavaDescriptor extends AbstractTypeDescriptor implements DiscriminatorType {
+public class LocalDateStringType extends AbstractSingleColumnStandardBasicType {
public static final LocalDateStringType INSTANCE = new LocalDateStringType();
public LocalDateStringType() {
- super(VarcharTypeDescriptor.INSTANCE, LocalDateStringJavaDescriptor.INSTANCE);
+ super(VarcharJdbcType.INSTANCE, LocalDateStringJavaDescriptor.INSTANCE);
}
@Override
@@ -21,14 +19,12 @@ public class LocalDateStringType extends AbstractSingleColumnStandardBasicTypeHibernate EntityManager Demo
true
-
+
-
-
-
-
+
+
+
+
\ No newline at end of file
diff --git a/persistence-modules/hibernate-queries/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaIntegrationTest.java b/persistence-modules/hibernate-queries/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaIntegrationTest.java
index a1f88f3387..c405eb9ebd 100644
--- a/persistence-modules/hibernate-queries/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaIntegrationTest.java
+++ b/persistence-modules/hibernate-queries/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaIntegrationTest.java
@@ -15,10 +15,10 @@ import com.baeldung.hibernate.criteria.model.Item;
import com.baeldung.hibernate.criteria.util.HibernateUtil;
import com.baeldung.hibernate.criteria.view.ApplicationView;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaDelete;
-import javax.persistence.criteria.CriteriaUpdate;
-import javax.persistence.criteria.Root;
+import jakarta.persistence.criteria.CriteriaBuilder;
+import jakarta.persistence.criteria.CriteriaDelete;
+import jakarta.persistence.criteria.CriteriaUpdate;
+import jakarta.persistence.criteria.Root;
public class HibernateCriteriaIntegrationTest {
diff --git a/persistence-modules/hibernate-queries/src/test/java/com/baeldung/hibernate/criteriaquery/TypeSafeCriteriaIntegrationTest.java b/persistence-modules/hibernate-queries/src/test/java/com/baeldung/hibernate/criteriaquery/TypeSafeCriteriaIntegrationTest.java
index cedba412d9..bfcb4301a7 100644
--- a/persistence-modules/hibernate-queries/src/test/java/com/baeldung/hibernate/criteriaquery/TypeSafeCriteriaIntegrationTest.java
+++ b/persistence-modules/hibernate-queries/src/test/java/com/baeldung/hibernate/criteriaquery/TypeSafeCriteriaIntegrationTest.java
@@ -1,6 +1,5 @@
package com.baeldung.hibernate.criteriaquery;
-import com.baeldung.hibernate.criteriaquery.HibernateUtil;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.query.Query;
@@ -10,9 +9,9 @@ import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Root;
+import jakarta.persistence.criteria.CriteriaBuilder;
+import jakarta.persistence.criteria.CriteriaQuery;
+import jakarta.persistence.criteria.Root;
import java.io.IOException;
import java.util.List;
diff --git a/persistence-modules/hibernate-queries/src/test/java/com/baeldung/hibernate/distinct/entities/DistinctHqlQueriesUnitTest.java b/persistence-modules/hibernate-queries/src/test/java/com/baeldung/hibernate/distinct/entities/DistinctHqlQueriesUnitTest.java
index 799439a51b..3ce384741f 100644
--- a/persistence-modules/hibernate-queries/src/test/java/com/baeldung/hibernate/distinct/entities/DistinctHqlQueriesUnitTest.java
+++ b/persistence-modules/hibernate-queries/src/test/java/com/baeldung/hibernate/distinct/entities/DistinctHqlQueriesUnitTest.java
@@ -8,7 +8,6 @@ import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
-import org.hibernate.annotations.QueryHints;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -45,12 +44,12 @@ public class DistinctHqlQueriesUnitTest {
}
@Test
- public void whenExecutingSelectQuery_thereWillBeDuplicates() {
+ public void whenExecutingSelectQuery_thereTheInsertedPosts() {
String hql = "SELECT p FROM Post p LEFT JOIN FETCH p.comments";
List posts = session.createQuery(hql, Post.class)
.getResultList();
- assertThat(posts).hasSize(3);
+ assertThat(posts).hasSize(1);
}
@Test
@@ -68,8 +67,8 @@ public class DistinctHqlQueriesUnitTest {
@Test
public void whenExecutingSelectDistinctQueryWithHint_thereShouldBeNoDuplicates() {
String hql = "SELECT DISTINCT p FROM Post p LEFT JOIN FETCH p.comments";
+ // From Hibernate ORM 6, distinct is always passed to the SQL query and the flag QueryHints#HINT_PASS_DISTINCT_THROUGH has been removed.
List posts = session.createQuery(hql, Post.class)
- .setHint(QueryHints.PASS_DISTINCT_THROUGH, false)
.getResultList();
assertThat(posts).hasSize(1)
diff --git a/persistence-modules/java-jpa-2/pom.xml b/persistence-modules/java-jpa-2/pom.xml
index b736b50dd1..38dd64d7b2 100644
--- a/persistence-modules/java-jpa-2/pom.xml
+++ b/persistence-modules/java-jpa-2/pom.xml
@@ -137,7 +137,7 @@
3.3.3
3.0.0
4.3.1
- 1.4.200
+ 2.1.214
\ No newline at end of file
diff --git a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/defaultvalues/User.java b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/defaultvalues/User.java
index 436c708d40..83b05fbc59 100644
--- a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/defaultvalues/User.java
+++ b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/defaultvalues/User.java
@@ -5,7 +5,7 @@ import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
-@Entity
+@Entity(name = "users")
public class User {
@Id
diff --git a/persistence-modules/java-jpa-2/src/main/resources/META-INF/persistence.xml b/persistence-modules/java-jpa-2/src/main/resources/META-INF/persistence.xml
index 3bc81910d9..1e3d3470ed 100644
--- a/persistence-modules/java-jpa-2/src/main/resources/META-INF/persistence.xml
+++ b/persistence-modules/java-jpa-2/src/main/resources/META-INF/persistence.xml
@@ -197,7 +197,7 @@
+ value="jdbc:h2:mem:test;MODE=LEGACY" />
+ value="jdbc:h2:mem:test;MODE=LEGACY" />
flyway-repair
hbase
hibernate5
-
+ hibernate-mapping
hibernate-mapping-2
-
+ hibernate-annotations
hibernate-exceptions
hibernate-libraries
hibernate-jpa
-
-
+ hibernate-queries
+ hibernate-enterprise
influxdb
java-cockroachdb
@@ -59,14 +58,14 @@
solr
-
+ spring-boot-persistence-2
spring-boot-persistence-3
spring-boot-mysql
spring-boot-persistence
spring-boot-persistence-h2
-
+ spring-boot-persistence-mongodb-3
spring-data-arangodb
spring-data-cassandra
spring-data-cassandra-test
@@ -107,7 +106,7 @@
spring-jdbc
-
+ spring-jooq
spring-mybatis
spring-persistence-simple
@@ -116,7 +115,7 @@
6.2.0.Final
42.5.4
- 2.3.4
+ 2.7.1
1.16.3
diff --git a/persistence-modules/spring-boot-persistence-2/pom.xml b/persistence-modules/spring-boot-persistence-2/pom.xml
index 1a02b18e50..260c558875 100644
--- a/persistence-modules/spring-boot-persistence-2/pom.xml
+++ b/persistence-modules/spring-boot-persistence-2/pom.xml
@@ -17,13 +17,6 @@
-
- org.junit
- junit-bom
- ${junit-jupiter.version}
- pom
- import
-
org.springframework.boot
spring-boot-dependencies
@@ -33,7 +26,7 @@
org.jdbi
- jdbi3-spring4
+ jdbi3-spring5
${jdbi.version}
@@ -55,7 +48,7 @@
org.jdbi
- jdbi3-spring4
+ jdbi3-spring5
org.jdbi
@@ -103,6 +96,7 @@
mysql
mysql-connector-java
+ ${mysql-connector-java.version}
org.xerial
@@ -143,10 +137,14 @@
- 3.9.1
- 2.1.8.RELEASE
- 0.9.5.2
- 21.1.0.0
+ 3.38.0
+ 3.0.5
+ 0.9.5.5
+ 21.9.0.0
+
+ 2.0.7
+ 1.4.6
+ 8.0.33
\ No newline at end of file
diff --git a/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/boot/jdbi/JdbiConfiguration.java b/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/boot/jdbi/JdbiConfiguration.java
index ddbe6cc118..d744a46f3f 100644
--- a/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/boot/jdbi/JdbiConfiguration.java
+++ b/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/boot/jdbi/JdbiConfiguration.java
@@ -31,11 +31,11 @@ public class JdbiConfiguration {
// Register all available plugins
log.info("[I27] Installing plugins... ({} found)", jdbiPlugins.size());
- jdbiPlugins.forEach(plugin -> jdbi.installPlugin(plugin));
+ jdbiPlugins.forEach(jdbi::installPlugin);
// Register all available rowMappers
log.info("[I31] Installing rowMappers... ({} found)", rowMappers.size());
- rowMappers.forEach(mapper -> jdbi.registerRowMapper(mapper));
+ rowMappers.forEach(jdbi::registerRowMapper);
return jdbi;
}
diff --git a/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/boot/jdbi/domain/CarModel.java b/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/boot/jdbi/domain/CarModel.java
index 80b615801b..36cfd59b6d 100644
--- a/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/boot/jdbi/domain/CarModel.java
+++ b/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/boot/jdbi/domain/CarModel.java
@@ -8,7 +8,7 @@ import lombok.Data;
public class CarModel {
private Long id;
private String name;
- private Integer year;
+ private Integer yearDate;
private String sku;
private Long makerId;
}
diff --git a/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/boot/jdbi/mapper/CarModelMapper.java b/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/boot/jdbi/mapper/CarModelMapper.java
index eeceafd649..b2311ef6a9 100644
--- a/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/boot/jdbi/mapper/CarModelMapper.java
+++ b/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/boot/jdbi/mapper/CarModelMapper.java
@@ -18,7 +18,7 @@ public class CarModelMapper implements RowMapper{
.id(rs.getLong("id"))
.name(rs.getString("name"))
.sku(rs.getString("sku"))
- .year(rs.getInt("year"))
+ .yearDate(rs.getInt("year"))
.build();
}
diff --git a/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/db/indexing/Image.java b/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/db/indexing/Image.java
index e3fcf53f81..7c7a558777 100644
--- a/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/db/indexing/Image.java
+++ b/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/db/indexing/Image.java
@@ -1,9 +1,9 @@
package com.baeldung.db.indexing;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Lob;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.Lob;
@Entity
class Image {
diff --git a/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/spring/oracle/pooling/entity/Book.java b/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/spring/oracle/pooling/entity/Book.java
index fb2c3fcf6a..af4199e65b 100644
--- a/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/spring/oracle/pooling/entity/Book.java
+++ b/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/spring/oracle/pooling/entity/Book.java
@@ -1,9 +1,9 @@
package com.baeldung.spring.oracle.pooling.entity;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
@Entity
public class Book {
diff --git a/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/springboothsqldb/application/entities/Customer.java b/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/springboothsqldb/application/entities/Customer.java
index ee2735abb8..cd4fafb60f 100644
--- a/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/springboothsqldb/application/entities/Customer.java
+++ b/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/springboothsqldb/application/entities/Customer.java
@@ -1,10 +1,10 @@
package com.baeldung.springboothsqldb.application.entities;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
@Entity
@Table(name = "customers")
diff --git a/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/states/UserEntity.java b/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/states/UserEntity.java
index 90bd275240..8c3494d1e4 100644
--- a/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/states/UserEntity.java
+++ b/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/states/UserEntity.java
@@ -5,9 +5,9 @@ import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.ManyToOne;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.ManyToOne;
@Entity
@AllArgsConstructor
diff --git a/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/states/UserEntityWithCascade.java b/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/states/UserEntityWithCascade.java
index de0d62bfe2..ada6b87ae3 100644
--- a/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/states/UserEntityWithCascade.java
+++ b/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/states/UserEntityWithCascade.java
@@ -5,10 +5,10 @@ import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
-import javax.persistence.CascadeType;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.ManyToOne;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.ManyToOne;
@Entity
@AllArgsConstructor
diff --git a/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/tomcatconnectionpool/application/entities/Customer.java b/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/tomcatconnectionpool/application/entities/Customer.java
index 712506eb98..02af097dc0 100644
--- a/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/tomcatconnectionpool/application/entities/Customer.java
+++ b/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/tomcatconnectionpool/application/entities/Customer.java
@@ -1,11 +1,11 @@
package com.baeldung.tomcatconnectionpool.application.entities;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
@Entity
@Table(name = "customers")
diff --git a/persistence-modules/spring-boot-persistence-2/src/main/resources/com/baeldung/boot/jdbi/dao/CarMakerDao/insert.sql b/persistence-modules/spring-boot-persistence-2/src/main/resources/com/baeldung/boot/jdbi/dao/CarMakerDao/insert.sql
index 0e045d7274..0b1a93158b 100644
--- a/persistence-modules/spring-boot-persistence-2/src/main/resources/com/baeldung/boot/jdbi/dao/CarMakerDao/insert.sql
+++ b/persistence-modules/spring-boot-persistence-2/src/main/resources/com/baeldung/boot/jdbi/dao/CarMakerDao/insert.sql
@@ -1,4 +1,4 @@
--
-- Insert
--
-insert into car_maker(id,name) values (:id,:name);
+insert into car_maker(name) values (:name);
diff --git a/persistence-modules/spring-boot-persistence-2/src/main/resources/com/baeldung/boot/jdbi/dao/CarModelDao/insert.sql b/persistence-modules/spring-boot-persistence-2/src/main/resources/com/baeldung/boot/jdbi/dao/CarModelDao/insert.sql
index b277213584..6bca3a0d6d 100644
--- a/persistence-modules/spring-boot-persistence-2/src/main/resources/com/baeldung/boot/jdbi/dao/CarModelDao/insert.sql
+++ b/persistence-modules/spring-boot-persistence-2/src/main/resources/com/baeldung/boot/jdbi/dao/CarModelDao/insert.sql
@@ -1,8 +1,8 @@
--
-- Insert
--
-insert into car_model(maker_fk,name,sku,year) values (
+insert into car_model(maker_fk,name,sku,yearDate) values (
:makerId,
:name,
:sku,
- :year );
+ :yearDate );
diff --git a/persistence-modules/spring-boot-persistence-2/src/test/java/com/baeldung/boot/jdbi/SpringBootJdbiApplicationIntegrationTest.java b/persistence-modules/spring-boot-persistence-2/src/test/java/com/baeldung/boot/jdbi/SpringBootJdbiApplicationIntegrationTest.java
index ac5661afbc..948d197f14 100644
--- a/persistence-modules/spring-boot-persistence-2/src/test/java/com/baeldung/boot/jdbi/SpringBootJdbiApplicationIntegrationTest.java
+++ b/persistence-modules/spring-boot-persistence-2/src/test/java/com/baeldung/boot/jdbi/SpringBootJdbiApplicationIntegrationTest.java
@@ -76,7 +76,7 @@ public class SpringBootJdbiApplicationIntegrationTest {
@Test
public void givenExistingCarMaker_whenFindById_thenReturnExistingCarMaker() {
- CarMaker maker = carMakerDao.findById(1l);
+ CarMaker maker = carMakerDao.findById(1L);
assertThat(maker).isNotNull();
assertThat(maker.getId()).isEqualTo(1);
@@ -85,12 +85,12 @@ public class SpringBootJdbiApplicationIntegrationTest {
@Test
public void givenExistingCarMaker_whenBulkInsertFails_thenRollback() {
- CarMaker maker = carMakerDao.findById(1l);
+ CarMaker maker = carMakerDao.findById(1L);
CarModel m1 = CarModel.builder()
.makerId(maker.getId())
.name("Model X1")
.sku("1-M1")
- .year(2019)
+ .yearDate(2019)
.build();
maker.getModels().add(m1);
@@ -98,7 +98,7 @@ public class SpringBootJdbiApplicationIntegrationTest {
.makerId(maker.getId())
.name("Model X1")
.sku("1-M1")
- .year(2019)
+ .yearDate(2019)
.build();
maker.getModels().add(m2);
diff --git a/persistence-modules/spring-boot-persistence-2/src/test/java/com/baeldung/db/indexing/FileSystemImageIntegrationTest.java b/persistence-modules/spring-boot-persistence-2/src/test/java/com/baeldung/db/indexing/FileSystemImageIntegrationTest.java
index 83f5bae095..809d04cc96 100644
--- a/persistence-modules/spring-boot-persistence-2/src/test/java/com/baeldung/db/indexing/FileSystemImageIntegrationTest.java
+++ b/persistence-modules/spring-boot-persistence-2/src/test/java/com/baeldung/db/indexing/FileSystemImageIntegrationTest.java
@@ -4,8 +4,10 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.BDDMockito.given;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+import java.io.File;
import java.io.InputStream;
-import java.nio.file.Paths;
+import java.net.URISyntaxException;
+import java.net.URL;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
@@ -64,10 +66,13 @@ class FileSystemImageIntegrationTest {
private FileSystemResource baeldungJpegResource() {
ClassLoader classLoader = ClassLoader.getSystemClassLoader();
- String imagePath = classLoader.getResource("baeldung.jpeg")
- .getFile();
-
- return new FileSystemResource(Paths.get(imagePath));
+ try {
+ final URL resource = classLoader.getResource("baeldung.jpeg");
+ if (resource != null) {
+ return new FileSystemResource(new File(resource.toURI()).getAbsolutePath());
+ }
+ } catch (URISyntaxException ignore) {}
+ return null;
}
}
diff --git a/persistence-modules/spring-boot-persistence-2/src/test/java/com/baeldung/db/indexing/ImageIntegrationTest.java b/persistence-modules/spring-boot-persistence-2/src/test/java/com/baeldung/db/indexing/ImageIntegrationTest.java
index e38e0a21a9..09e13aefd4 100644
--- a/persistence-modules/spring-boot-persistence-2/src/test/java/com/baeldung/db/indexing/ImageIntegrationTest.java
+++ b/persistence-modules/spring-boot-persistence-2/src/test/java/com/baeldung/db/indexing/ImageIntegrationTest.java
@@ -7,6 +7,8 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
import java.io.IOException;
import java.io.InputStream;
+import java.net.URISyntaxException;
+import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Optional;
@@ -68,11 +70,15 @@ class ImageIntegrationTest {
private Image baeldungImage() throws IOException {
ClassLoader classLoader = ClassLoader.getSystemClassLoader();
-
- Image mockImage = new Image();
- mockImage.setContent(Files.readAllBytes(Paths.get(classLoader.getResource("baeldung.jpeg")
- .getFile())));
- return mockImage;
+ try {
+ final URL resource = classLoader.getResource("baeldung.jpeg");
+ if (resource != null) {
+ Image mockImage = new Image();
+ mockImage.setContent(Files.readAllBytes(Paths.get(resource.toURI())));
+ return mockImage;
+ }
+ } catch (URISyntaxException ignore) {}
+ return null;
}
}
diff --git a/persistence-modules/spring-boot-persistence-2/src/test/java/com/baeldung/springboothsqldb/application/tests/CustomerControllerIntegrationTest.java b/persistence-modules/spring-boot-persistence-2/src/test/java/com/baeldung/springboothsqldb/application/tests/CustomerControllerIntegrationTest.java
index 6956df0b13..bdd9a19b68 100644
--- a/persistence-modules/spring-boot-persistence-2/src/test/java/com/baeldung/springboothsqldb/application/tests/CustomerControllerIntegrationTest.java
+++ b/persistence-modules/spring-boot-persistence-2/src/test/java/com/baeldung/springboothsqldb/application/tests/CustomerControllerIntegrationTest.java
@@ -29,8 +29,7 @@ public class CustomerControllerIntegrationTest {
@Before
public void setUpJsonMediaType() {
- MEDIA_TYPE_JSON = new MediaType(MediaType.APPLICATION_JSON.getType(), MediaType.APPLICATION_JSON.getSubtype(), Charset.forName("utf8"));
-
+ MEDIA_TYPE_JSON = new MediaType(MediaType.APPLICATION_JSON.getType(), MediaType.APPLICATION_JSON.getSubtype());
}
@Test
diff --git a/persistence-modules/spring-boot-persistence-2/src/test/java/com/baeldung/states/UserEntityIntegrationTest.java b/persistence-modules/spring-boot-persistence-2/src/test/java/com/baeldung/states/UserEntityIntegrationTest.java
index 5d0dc99ad7..0ce3ff34ce 100644
--- a/persistence-modules/spring-boot-persistence-2/src/test/java/com/baeldung/states/UserEntityIntegrationTest.java
+++ b/persistence-modules/spring-boot-persistence-2/src/test/java/com/baeldung/states/UserEntityIntegrationTest.java
@@ -9,7 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
-import javax.persistence.EntityManagerFactory;
+import jakarta.persistence.EntityManagerFactory;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
diff --git a/persistence-modules/spring-boot-persistence-2/src/test/resources/data.sql b/persistence-modules/spring-boot-persistence-2/src/test/resources/data.sql
index e3e1f4ae32..fb97140b48 100644
--- a/persistence-modules/spring-boot-persistence-2/src/test/resources/data.sql
+++ b/persistence-modules/spring-boot-persistence-2/src/test/resources/data.sql
@@ -1,12 +1,12 @@
-insert into car_maker(id,name) values (1,'Special Motors');
-insert into car_maker(id,name) values (2,'BWM');
-insert into car_maker(id,name) values (3,'Dolores');
+insert into car_maker(id,name) values (99,'Special Motors');
+insert into car_maker(id,name) values (100,'BWM');
+insert into car_maker(id,name) values (102,'Dolores');
-insert into car_model(id,maker_fk,name,sku,year) values(1,1,'Muze','SM001',2018);
-insert into car_model(id,maker_fk,name,sku,year) values(2,1,'Empada','SM002',2008);
+insert into car_model(id,maker_fk,name,sku,yearDate) values(132,99,'Muze','SM001',2018);
+insert into car_model(id,maker_fk,name,sku,yearDate) values(145,99,'Empada','SM002',2008);
-insert into car_model(id,maker_fk,name,sku,year) values(4,2,'BWM-100','BWM100',2008);
-insert into car_model(id,maker_fk,name,sku,year) values(5,2,'BWM-200','BWM200',2009);
-insert into car_model(id,maker_fk,name,sku,year) values(6,2,'BWM-300','BWM300',2008);
+insert into car_model(id,maker_fk,name,sku,yearDate) values(43,100,'BWM-100','BWM100',2008);
+insert into car_model(id,maker_fk,name,sku,yearDate) values(564,100,'BWM-200','BWM200',2009);
+insert into car_model(id,maker_fk,name,sku,yearDate) values(343,100,'BWM-300','BWM300',2008);
diff --git a/persistence-modules/spring-boot-persistence-2/src/test/resources/schema.sql b/persistence-modules/spring-boot-persistence-2/src/test/resources/schema.sql
index 8d7db6c9f3..72f9e606de 100644
--- a/persistence-modules/spring-boot-persistence-2/src/test/resources/schema.sql
+++ b/persistence-modules/spring-boot-persistence-2/src/test/resources/schema.sql
@@ -19,9 +19,9 @@ create table car_model(
maker_fk int not null,
name varchar(128) not null,
sku varchar(128) not null,
- year int not null
+ yearDate int not null
);
create unique index ui_car_model_01 on car_model(maker_fk,sku);
-create unique index ui_car_model_02 on car_model(maker_fk,name,year);
+create unique index ui_car_model_02 on car_model(maker_fk,name,yearDate);
diff --git a/persistence-modules/spring-boot-persistence-h2/README.md b/persistence-modules/spring-boot-persistence-h2/README.md
index 1d47907a98..7f6e243677 100644
--- a/persistence-modules/spring-boot-persistence-h2/README.md
+++ b/persistence-modules/spring-boot-persistence-h2/README.md
@@ -5,3 +5,4 @@
- [Hibernate @NotNull vs @Column(nullable = false)](https://www.baeldung.com/hibernate-notnull-vs-nullable)
- [Quick Guide to Hibernate enable_lazy_load_no_trans Property](https://www.baeldung.com/hibernate-lazy-loading-workaround)
- [Where Does H2’s Embedded Database Store The Data?](https://www.baeldung.com/h2-embedded-db-data-storage)
+- [Spring Boot H2 JdbcSQLSyntaxErrorException expected “identifier”](https://www.baeldung.com/spring-boot-h2-jdbcsqlsyntaxerrorexception-expected-identifier)
diff --git a/persistence-modules/spring-boot-persistence-mongodb-2/pom.xml b/persistence-modules/spring-boot-persistence-mongodb-2/pom.xml
index cd7198b931..121581498a 100644
--- a/persistence-modules/spring-boot-persistence-mongodb-2/pom.xml
+++ b/persistence-modules/spring-boot-persistence-mongodb-2/pom.xml
@@ -5,7 +5,6 @@
4.0.0
spring-boot-persistence-mongodb-2
spring-boot-persistence-mongodb-2
- war
This is simple boot application for Spring boot persistence mongodb test
diff --git a/persistence-modules/spring-boot-persistence-mongodb-3/pom.xml b/persistence-modules/spring-boot-persistence-mongodb-3/pom.xml
index 484e0c0f7e..b699a33559 100644
--- a/persistence-modules/spring-boot-persistence-mongodb-3/pom.xml
+++ b/persistence-modules/spring-boot-persistence-mongodb-3/pom.xml
@@ -5,7 +5,6 @@
4.0.0
spring-boot-persistence-mongodb-3
spring-boot-persistence-mongodb-3
- war
This is simple boot application for Spring boot persistence mongodb
diff --git a/persistence-modules/spring-boot-persistence-mongodb/pom.xml b/persistence-modules/spring-boot-persistence-mongodb/pom.xml
index 724fa38f7e..aae307f7f8 100644
--- a/persistence-modules/spring-boot-persistence-mongodb/pom.xml
+++ b/persistence-modules/spring-boot-persistence-mongodb/pom.xml
@@ -5,7 +5,6 @@
4.0.0
spring-boot-persistence-mongodb
spring-boot-persistence-mongodb
- war
This is simple boot application for Spring boot persistence mongodb test
diff --git a/persistence-modules/spring-jooq/pom.xml b/persistence-modules/spring-jooq/pom.xml
index 9848c726c5..d12a921212 100644
--- a/persistence-modules/spring-jooq/pom.xml
+++ b/persistence-modules/spring-jooq/pom.xml
@@ -195,11 +195,11 @@
- 3.14.15
+ 3.16.18
1.0.0
1.5
1.0.0
- 1.4.200
+ 2.1.214
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 7bca64c424..996ebdc459 100644
--- a/pom.xml
+++ b/pom.xml
@@ -222,6 +222,9 @@
maven-war-plugin
${maven-war-plugin.version}
+
+ false
+
@@ -364,6 +367,7 @@
muleesb
persistence-modules/deltaspike
+ persistence-modules/hibernate-ogm
@@ -426,7 +430,6 @@
spring-spel
spring-static-resources
spring-swagger-codegen
- spring-vault
spring-web-modules
spring-websockets
static-analysis
@@ -550,6 +553,7 @@
muleesb
persistence-modules/deltaspike
+ persistence-modules/hibernate-ogm
@@ -603,7 +607,6 @@
spring-spel
spring-static-resources
spring-swagger-codegen
- spring-vault
spring-web-modules
spring-websockets
static-analysis
@@ -924,6 +927,7 @@
spring-state-machine
spring-threads
+ spring-vault
tensorflow-java
xstream
webrtc
@@ -935,6 +939,11 @@
vaadin
libraries-3
web-modules/apache-tapestry
+ web-modules/blade
+ web-modules/bootique
+ web-modules/dropwizard
+ web-modules/google-web-toolkit
+ web-modules/jakarta-ee
@@ -1176,6 +1185,7 @@
spring-state-machine
spring-threads
+ spring-vault
tensorflow-java
xstream
webrtc
@@ -1187,6 +1197,11 @@
vaadin
libraries-3
web-modules/apache-tapestry
+ web-modules/blade
+ web-modules/bootique
+ web-modules/dropwizard
+ web-modules/google-web-toolkit
+ web-modules/google-jakarta-ee
@@ -1258,7 +1273,7 @@
2.6
3.12.0
1.5.0
- 3.0.0
+ 3.3.2
4.0.1
1.2
2.3.3
diff --git a/spring-boot-modules/spring-boot-3-observation/pom.xml b/spring-boot-modules/spring-boot-3-observation/pom.xml
index ed613ee98e..ddd81e3ca4 100644
--- a/spring-boot-modules/spring-boot-3-observation/pom.xml
+++ b/spring-boot-modules/spring-boot-3-observation/pom.xml
@@ -54,6 +54,25 @@
org.springframework.boot
spring-boot-starter-aop
+
+ org.springframework.boot
+ spring-boot-starter-data-jpa
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+
+
+
+ com.github.gavlyukovskiy
+ p6spy-spring-boot-starter
+ 1.9.0
+
+
+ com.h2database
+ h2
+ runtime
+
org.springframework.boot
spring-boot-devtools
@@ -63,4 +82,8 @@
+
+ com.baeldung.samples.SimpleObservationApplication
+
+
diff --git a/spring-boot-modules/spring-boot-3-observation/src/main/java/com/baeldung/p6spy/SampleP6SpyApplication.java b/spring-boot-modules/spring-boot-3-observation/src/main/java/com/baeldung/p6spy/SampleP6SpyApplication.java
new file mode 100644
index 0000000000..000ffea9c9
--- /dev/null
+++ b/spring-boot-modules/spring-boot-3-observation/src/main/java/com/baeldung/p6spy/SampleP6SpyApplication.java
@@ -0,0 +1,13 @@
+package com.baeldung.p6spy;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class SampleP6SpyApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(SampleP6SpyApplication.class, args);
+ }
+
+}
diff --git a/spring-boot-modules/spring-boot-3-observation/src/main/java/com/baeldung/p6spy/controllers/JDBCController.java b/spring-boot-modules/spring-boot-3-observation/src/main/java/com/baeldung/p6spy/controllers/JDBCController.java
new file mode 100644
index 0000000000..d09e839165
--- /dev/null
+++ b/spring-boot-modules/spring-boot-3-observation/src/main/java/com/baeldung/p6spy/controllers/JDBCController.java
@@ -0,0 +1,54 @@
+package com.baeldung.p6spy.controllers;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.sql.DataSource;
+import java.sql.Connection;
+import java.sql.Statement;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("jdbc")
+public class JDBCController {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @RequestMapping("/commit")
+ public List