diff --git a/extensions/panache/hibernate-orm-panache/runtime/pom.xml b/extensions/panache/hibernate-orm-panache/runtime/pom.xml
index 0fd7465040166..fe71c76a7da2f 100644
--- a/extensions/panache/hibernate-orm-panache/runtime/pom.xml
+++ b/extensions/panache/hibernate-orm-panache/runtime/pom.xml
@@ -34,6 +34,11 @@
jakarta.json.bind-api
true
+
+ io.quarkus
+ quarkus-jackson
+ true
+
diff --git a/extensions/panache/hibernate-orm-panache/runtime/src/main/java/io/quarkus/hibernate/orm/panache/PanacheEntityBase.java b/extensions/panache/hibernate-orm-panache/runtime/src/main/java/io/quarkus/hibernate/orm/panache/PanacheEntityBase.java
index cba7688c5d845..a4b97ebc6e9ba 100644
--- a/extensions/panache/hibernate-orm-panache/runtime/src/main/java/io/quarkus/hibernate/orm/panache/PanacheEntityBase.java
+++ b/extensions/panache/hibernate-orm-panache/runtime/src/main/java/io/quarkus/hibernate/orm/panache/PanacheEntityBase.java
@@ -8,6 +8,8 @@
import javax.persistence.LockModeType;
import javax.persistence.Transient;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
import io.quarkus.hibernate.orm.panache.runtime.JpaOperations;
import io.quarkus.panache.common.Parameters;
import io.quarkus.panache.common.Sort;
@@ -75,6 +77,8 @@ public void delete() {
* @return true if this entity is persistent in the database.
*/
@JsonbTransient
+ // @JsonIgnore is here to avoid serialization of this property with jackson
+ @JsonIgnore
public boolean isPersistent() {
return JpaOperations.isPersistent(this);
}
diff --git a/integration-tests/hibernate-orm-panache/pom.xml b/integration-tests/hibernate-orm-panache/pom.xml
index c71ab4cb7154a..572f19c9d6447 100644
--- a/integration-tests/hibernate-orm-panache/pom.xml
+++ b/integration-tests/hibernate-orm-panache/pom.xml
@@ -63,6 +63,11 @@
quarkus-test-h2
test
+
+ io.quarkus
+ quarkus-jackson
+ test
+
diff --git a/integration-tests/hibernate-orm-panache/src/test/java/io/quarkus/it/panache/PanacheFunctionalityTest.java b/integration-tests/hibernate-orm-panache/src/test/java/io/quarkus/it/panache/PanacheFunctionalityTest.java
index 8a669e9437c73..4c5b29fdfadd7 100644
--- a/integration-tests/hibernate-orm-panache/src/test/java/io/quarkus/it/panache/PanacheFunctionalityTest.java
+++ b/integration-tests/hibernate-orm-panache/src/test/java/io/quarkus/it/panache/PanacheFunctionalityTest.java
@@ -1,10 +1,14 @@
package io.quarkus.it.panache;
import static org.hamcrest.Matchers.is;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
import io.quarkus.test.junit.DisabledOnNativeImage;
import io.quarkus.test.junit.QuarkusTest;
import io.restassured.RestAssured;
@@ -49,4 +53,23 @@ public void testPanacheInTest() {
public void testBug5274() {
RestAssured.when().get("/test/5274").then().body(is("OK"));
}
+
+ /**
+ * This test is disabled in native mode as there is no interaction with the quarkus integration test endpoint.
+ */
+ @DisabledOnNativeImage
+ @Test
+ public void jacksonDeserilazationIgnoresPersitantAttribute() throws JsonProcessingException {
+ // set Up
+ Person person = new Person();
+ person.name = "max";
+ // do
+ ObjectMapper objectMapper = new ObjectMapper();
+ String personAsString = objectMapper.writeValueAsString(person);
+ // check
+ // hence no 'persistence'-attribute
+ assertEquals(
+ "{\"id\":null,\"name\":\"max\",\"uniqueName\":null,\"address\":null,\"status\":null,\"dogs\":[],\"serialisationTrick\":1}",
+ personAsString);
+ }
}