diff --git a/jackson-modules/jackson-exceptions/pom.xml b/jackson-modules/jackson-exceptions/pom.xml
index e19ef4f8835b..920514b08ddb 100644
--- a/jackson-modules/jackson-exceptions/pom.xml
+++ b/jackson-modules/jackson-exceptions/pom.xml
@@ -12,6 +12,14 @@
0.0.1-SNAPSHOT
+
+
+ com.fasterxml.jackson.module
+ jackson-module-paranamer
+ ${jackson.version}
+
+
+
jackson-exceptions
diff --git a/jackson-modules/jackson-exceptions/src/main/java/com/baeldung/invaliddefinitionexception/Notification.java b/jackson-modules/jackson-exceptions/src/main/java/com/baeldung/invaliddefinitionexception/Notification.java
new file mode 100644
index 000000000000..0eb4f70b9e4b
--- /dev/null
+++ b/jackson-modules/jackson-exceptions/src/main/java/com/baeldung/invaliddefinitionexception/Notification.java
@@ -0,0 +1,20 @@
+package com.baeldung.invaliddefinitionexception;
+
+public class Notification {
+
+ private final String message;
+ private final int priority;
+
+ public Notification(String message, int priority) {
+ this.message = message;
+ this.priority = priority;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public int getPriority() {
+ return priority;
+ }
+}
diff --git a/jackson-modules/jackson-exceptions/src/main/java/com/baeldung/invaliddefinitionexception/NotificationWithCreator.java b/jackson-modules/jackson-exceptions/src/main/java/com/baeldung/invaliddefinitionexception/NotificationWithCreator.java
new file mode 100644
index 000000000000..55a8cbd4787e
--- /dev/null
+++ b/jackson-modules/jackson-exceptions/src/main/java/com/baeldung/invaliddefinitionexception/NotificationWithCreator.java
@@ -0,0 +1,24 @@
+package com.baeldung.invaliddefinitionexception;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class NotificationWithCreator {
+
+ private final String message;
+ private final int priority;
+
+ @JsonCreator
+ public NotificationWithCreator(@JsonProperty("message") String message, @JsonProperty("priority") int priority) {
+ this.message = message;
+ this.priority = priority;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public int getPriority() {
+ return priority;
+ }
+}
diff --git a/jackson-modules/jackson-exceptions/src/main/java/com/baeldung/invaliddefinitionexception/NotificationWithDefaultConstructor.java b/jackson-modules/jackson-exceptions/src/main/java/com/baeldung/invaliddefinitionexception/NotificationWithDefaultConstructor.java
new file mode 100644
index 000000000000..8ef64554b0fa
--- /dev/null
+++ b/jackson-modules/jackson-exceptions/src/main/java/com/baeldung/invaliddefinitionexception/NotificationWithDefaultConstructor.java
@@ -0,0 +1,26 @@
+package com.baeldung.invaliddefinitionexception;
+
+public class NotificationWithDefaultConstructor {
+
+ private String message;
+ private int priority;
+
+ public NotificationWithDefaultConstructor() {
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public int getPriority() {
+ return priority;
+ }
+
+ public void setPriority(int priority) {
+ this.priority = priority;
+ }
+}
\ No newline at end of file
diff --git a/jackson-modules/jackson-exceptions/src/test/java/com/baeldung/invaliddefinitionexception/NotificationDeserializationUnitTest.java b/jackson-modules/jackson-exceptions/src/test/java/com/baeldung/invaliddefinitionexception/NotificationDeserializationUnitTest.java
new file mode 100644
index 000000000000..8468869c8a2f
--- /dev/null
+++ b/jackson-modules/jackson-exceptions/src/test/java/com/baeldung/invaliddefinitionexception/NotificationDeserializationUnitTest.java
@@ -0,0 +1,56 @@
+package com.baeldung.invaliddefinitionexception;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import org.junit.jupiter.api.Test;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.exc.InvalidDefinitionException;
+import com.fasterxml.jackson.module.paranamer.ParanamerModule;
+
+class NotificationDeserializationUnitTest {
+
+ private static final String JSON = "{\"message\":\"Server maintenance\",\"priority\":2}";
+
+ private final ObjectMapper objectMapper = new ObjectMapper();
+
+ @Test
+ void givenNotificationWithoutCreator_whenDeserializing_thenThrowException() {
+ InvalidDefinitionException exception = assertThrows(InvalidDefinitionException.class, () -> objectMapper.readValue(JSON, Notification.class));
+
+ assertTrue(exception.getMessage()
+ .contains("no Creators, like default constructor, exist"));
+ }
+
+ @Test
+ void givenNotificationWithDefaultConstructor_whenDeserializing_thenCorrect() throws Exception {
+
+ NotificationWithDefaultConstructor notification = objectMapper.readValue(JSON, NotificationWithDefaultConstructor.class);
+
+ assertEquals("Server maintenance", notification.getMessage());
+ assertEquals(2, notification.getPriority());
+ }
+
+ @Test
+ void givenNotificationWithCreator_whenDeserializing_thenCorrect() throws Exception {
+
+ NotificationWithCreator notification = objectMapper.readValue(JSON, NotificationWithCreator.class);
+
+ assertEquals("Server maintenance", notification.getMessage());
+ assertEquals(2, notification.getPriority());
+ }
+
+ @Test
+ void givenParanamerModule_whenDeserializingNotification_thenCorrect() throws Exception {
+
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.registerModule(new ParanamerModule());
+
+ Notification notification = mapper.readValue(JSON, Notification.class);
+
+ assertEquals("Server maintenance", notification.getMessage());
+ assertEquals(2, notification.getPriority());
+ }
+}
\ No newline at end of file