From e86ab4f2091ce9db1f97b1bbeb31dd00935721ef Mon Sep 17 00:00:00 2001 From: KamilM1205 Date: Sun, 29 Jun 2025 22:28:03 +0400 Subject: [PATCH] Fix: Mapper set null fields for DTO and Entity. --- build.gradle.kts | 4 ++-- .../controller/schemes/CreateUserRequest.java | 7 +++++++ .../controller/schemes/GetUserResponse.java | 7 +++++++ .../controller/schemes/UpdateUserRequest.java | 7 +++++++ .../controller/schemes/UserResponse.java | 7 +++++++ .../ru/team58/profileservice/mapper/UserMapper.java | 4 +++- .../profileservice/persistence/entity/UserEntity.java | 11 +++++------ src/main/resources/application.properties | 2 +- 8 files changed, 39 insertions(+), 10 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 5a31b41..39bf11b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -43,16 +43,16 @@ dependencies { implementation("org.springframework.boot:spring-boot-starter-web") implementation("org.flywaydb:flyway-core") implementation("org.flywaydb:flyway-database-postgresql:11.10.0") - implementation("org.mapstruct:mapstruct:1.6.3") implementation("org.postgresql:postgresql") implementation("org.apache.logging.log4j:log4j-api:2.22.1") implementation("org.apache.logging.log4j:log4j-core:2.22.1") implementation("org.slf4j:slf4j-api:2.0.13") implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.6") runtimeOnly("org.apache.logging.log4j:log4j-slf4j-impl:2.22.1") - annotationProcessor("org.mapstruct:mapstruct-processor:1.6.3") compileOnly("org.projectlombok:lombok") annotationProcessor("org.projectlombok:lombok") + annotationProcessor("org.mapstruct:mapstruct-processor:1.6.3") + implementation("org.mapstruct:mapstruct:1.6.3") testImplementation("org.springframework.boot:spring-boot-starter-test") testImplementation("org.springframework.security:spring-security-test") testRuntimeOnly("org.junit.platform:junit-platform-launcher") diff --git a/src/main/java/ru/team58/profileservice/controller/schemes/CreateUserRequest.java b/src/main/java/ru/team58/profileservice/controller/schemes/CreateUserRequest.java index 9205b1d..6344ece 100644 --- a/src/main/java/ru/team58/profileservice/controller/schemes/CreateUserRequest.java +++ b/src/main/java/ru/team58/profileservice/controller/schemes/CreateUserRequest.java @@ -1,5 +1,12 @@ package ru.team58.profileservice.controller.schemes; +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@Builder public class CreateUserRequest { String username; String firstName; diff --git a/src/main/java/ru/team58/profileservice/controller/schemes/GetUserResponse.java b/src/main/java/ru/team58/profileservice/controller/schemes/GetUserResponse.java index 3b52b02..d73ddd6 100644 --- a/src/main/java/ru/team58/profileservice/controller/schemes/GetUserResponse.java +++ b/src/main/java/ru/team58/profileservice/controller/schemes/GetUserResponse.java @@ -1,5 +1,12 @@ package ru.team58.profileservice.controller.schemes; +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@Builder public class GetUserResponse { String username; String firstName; diff --git a/src/main/java/ru/team58/profileservice/controller/schemes/UpdateUserRequest.java b/src/main/java/ru/team58/profileservice/controller/schemes/UpdateUserRequest.java index f97b284..6548494 100644 --- a/src/main/java/ru/team58/profileservice/controller/schemes/UpdateUserRequest.java +++ b/src/main/java/ru/team58/profileservice/controller/schemes/UpdateUserRequest.java @@ -1,7 +1,14 @@ package ru.team58.profileservice.controller.schemes; +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; + import java.util.UUID; +@Getter +@Setter +@Builder public class UpdateUserRequest { UUID id; String username; diff --git a/src/main/java/ru/team58/profileservice/controller/schemes/UserResponse.java b/src/main/java/ru/team58/profileservice/controller/schemes/UserResponse.java index 2e0ef09..4433079 100644 --- a/src/main/java/ru/team58/profileservice/controller/schemes/UserResponse.java +++ b/src/main/java/ru/team58/profileservice/controller/schemes/UserResponse.java @@ -1,7 +1,14 @@ package ru.team58.profileservice.controller.schemes; +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; + import java.util.UUID; +@Getter +@Setter +@Builder public class UserResponse { UUID id; String username; diff --git a/src/main/java/ru/team58/profileservice/mapper/UserMapper.java b/src/main/java/ru/team58/profileservice/mapper/UserMapper.java index aeced74..857bcae 100644 --- a/src/main/java/ru/team58/profileservice/mapper/UserMapper.java +++ b/src/main/java/ru/team58/profileservice/mapper/UserMapper.java @@ -1,6 +1,7 @@ package ru.team58.profileservice.mapper; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; import org.mapstruct.factory.Mappers; import ru.team58.profileservice.controller.schemes.CreateUserRequest; import ru.team58.profileservice.controller.schemes.GetUserResponse; @@ -9,12 +10,13 @@ import ru.team58.profileservice.controller.schemes.UserResponse; import ru.team58.profileservice.persistence.entity.UserEntity; import ru.team58.profileservice.service.UserDTO; -@Mapper +@Mapper(componentModel = "spring") public interface UserMapper { UserMapper INSTANCE = Mappers.getMapper(UserMapper.class); UserDTO toUserDTO(UserEntity entity); UserDTO toUserDTO(UpdateUserRequest request); + @Mapping(target = "id", ignore = true) UserDTO toUserDTO(CreateUserRequest request); UserEntity toUserEntity(UserDTO dto); diff --git a/src/main/java/ru/team58/profileservice/persistence/entity/UserEntity.java b/src/main/java/ru/team58/profileservice/persistence/entity/UserEntity.java index 62c3236..b509abe 100644 --- a/src/main/java/ru/team58/profileservice/persistence/entity/UserEntity.java +++ b/src/main/java/ru/team58/profileservice/persistence/entity/UserEntity.java @@ -2,7 +2,6 @@ package ru.team58.profileservice.persistence.entity; import jakarta.persistence.*; import lombok.*; -import ru.team58.profileservice.service.UserDTO; import java.util.UUID; @@ -17,17 +16,17 @@ public class UserEntity { @Id @Column(name = "id", nullable = false) @GeneratedValue(strategy = GenerationType.UUID) - UUID id; + private UUID id; @Column(name = "username", nullable = false) - String username; + private String username; @Column(name = "firstName", nullable = false) - String firstName; + private String firstName; @Column(name = "lastName", nullable = false) - String lastName; + private String lastName; @Column(name = "email", nullable = false) - String email; + private String email; } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 294cc22..ef4016b 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -5,7 +5,7 @@ spring.datasource.url=jdbc:postgresql://localhost:5432/userdb spring.datasource.username=userdb spring.datasource.password=1205 -spring.jpa.hibernate.ddl-auto=update +spring.jpa.hibernate.ddl-auto=validate ## Flyway spring.flyway.enabled=true