From 5a1d808bbd9b8812f0fcc349a873f7aa325e3833 Mon Sep 17 00:00:00 2001 From: Manoj Sawan Date: Mon, 4 Aug 2025 21:56:45 +0530 Subject: [PATCH] prevent entity with dto mapping and sql database from having @JsonIgnoreProperties entities generated with dto mapping should not include @JsonIgnoreProperties for sql databases, as it can lead to unexpected serialization behavior. this change ensures that @JsonIgnoreProperties is only added to entities when not using dto mapping & for nosql (like mongodb, cassandra) Fix #29835 --- .../_entityPackage_/domain/_persistClass_.java.jhi.ejs | 6 ++++++ .../domain/_persistClass_.java.jhi.jakarta_persistence.ejs | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/generators/java/generators/domain/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.ejs b/generators/java/generators/domain/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.ejs index f1eb0865218e..8ac590843412 100644 --- a/generators/java/generators/domain/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.ejs +++ b/generators/java/generators/domain/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.ejs @@ -148,31 +148,37 @@ for (relationship of relationships) { <&- fragments.relationship<%- relationship.relationshipNameCapitalized %>AnnotationSection() -&> <%_ if (relationship.relationshipOneToMany) { _%> <%_ if (relationship.ignoreOtherSideProperty) { _%> + <%_ if (!dtoMapstruct || !databaseTypeSql ) { _%> @JsonIgnoreProperties(value = { <%_ relationship.otherEntity.relationships.forEach(otherRelationship => { _%> "<%= otherRelationship.propertyName %>", <%_ }); _%> }, allowSetters = true) + <%_ } _%> <%_ } _%> private Set<<%= relationship.otherEntity.persistClass %>> <%= relationship.relationshipFieldNamePlural %> = new HashSet<>(); <%_ } else if (relationship.relationshipManyToOne) { _%> <%_ if (relationship.ignoreOtherSideProperty) { _%> + <%_ if (!dtoMapstruct || !databaseTypeSql ) { _%> @JsonIgnoreProperties(value = { <%_ relationship.otherEntity.relationships.forEach(otherRelationship => { _%> "<%= otherRelationship.propertyName %>", <%_ }); _%> }, allowSetters = true) + <%_ } _%> <%_ } _%> private <%= relationship.otherEntity.persistClass %> <%= relationship.relationshipFieldName %>; <%_ } else if (relationship.relationshipManyToMany) { _%> <%_ if (relationship.ignoreOtherSideProperty) { _%> + <%_ if (!dtoMapstruct || !databaseTypeSql ) { _%> @JsonIgnoreProperties(value = { <%_ relationship.otherEntity.relationships.forEach(otherRelationship => { _%> "<%= otherRelationship.propertyName %>", <%_ }); _%> }, allowSetters = true) + <%_ } _%> <%_ } _%> private Set<<%= relationship.otherEntity.persistClass %>> <%= relationship.relationshipFieldNamePlural %> = new HashSet<>(); diff --git a/generators/spring-data-relational/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.jakarta_persistence.ejs b/generators/spring-data-relational/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.jakarta_persistence.ejs index a4fa3625e24a..eab107af1681 100644 --- a/generators/spring-data-relational/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.jakarta_persistence.ejs +++ b/generators/spring-data-relational/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.jakarta_persistence.ejs @@ -102,7 +102,7 @@ import org.hibernate.type.SqlTypes; <%= relationship.otherEntity.primaryKey.fields.length > 1 ? '}' : '' %> <%_ } _%> <%_ } else { -%> - <%_ if (relationship.ignoreOtherSideProperty) { -%> + <%_ if (relationship.ignoreOtherSideProperty && (!dtoMapstruct || !databaseTypeSql )) { -%> @JsonIgnoreProperties(value = { <%_ relationship.otherEntity.relationships.forEach(otherRelationship => { _%> "<%= otherRelationship.propertyName %>",