diff --git a/src/main/java/org/springframework/samples/petclinic/mapper/OwnerMapper.java b/src/main/java/org/springframework/samples/petclinic/mapper/OwnerMapper.java
index 04e679c26b2deaa58926f53fcf6e686e38ce52b2..5acb8a19c4b0247035c2f5cf4207c911a1c304d9 100755
--- a/src/main/java/org/springframework/samples/petclinic/mapper/OwnerMapper.java
+++ b/src/main/java/org/springframework/samples/petclinic/mapper/OwnerMapper.java
@@ -1,8 +1,9 @@
 package org.springframework.samples.petclinic.mapper;
 
 import org.mapstruct.Mapper;
-import org.springframework.samples.petclinic.rest.dto.OwnerDto;
+import org.mapstruct.Mapping;
 import org.springframework.samples.petclinic.model.Owner;
+import org.springframework.samples.petclinic.rest.dto.OwnerDto;
 import org.springframework.samples.petclinic.rest.dto.OwnerFieldsDto;
 
 import java.util.Collection;
@@ -18,6 +19,8 @@ public interface OwnerMapper {
 
     Owner toOwner(OwnerDto ownerDto);
 
+    @Mapping(target = "id", ignore = true)
+    @Mapping(target = "pets", ignore = true)
     Owner toOwner(OwnerFieldsDto ownerDto);
 
     List<OwnerDto> toOwnerDtoCollection(Collection<Owner> ownerCollection);
diff --git a/src/main/java/org/springframework/samples/petclinic/mapper/PetMapper.java b/src/main/java/org/springframework/samples/petclinic/mapper/PetMapper.java
index 1270af8d320b9a26e3730d72641a32d580b17046..ae161009ccb0b2505b125e539fec8f4b1492d174 100755
--- a/src/main/java/org/springframework/samples/petclinic/mapper/PetMapper.java
+++ b/src/main/java/org/springframework/samples/petclinic/mapper/PetMapper.java
@@ -2,18 +2,18 @@ package org.springframework.samples.petclinic.mapper;
 
 import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
+import org.springframework.samples.petclinic.model.Pet;
+import org.springframework.samples.petclinic.model.PetType;
 import org.springframework.samples.petclinic.rest.dto.PetDto;
 import org.springframework.samples.petclinic.rest.dto.PetFieldsDto;
 import org.springframework.samples.petclinic.rest.dto.PetTypeDto;
-import org.springframework.samples.petclinic.model.Pet;
-import org.springframework.samples.petclinic.model.PetType;
 
 import java.util.Collection;
 
 /**
  * Map Pet & PetDto using mapstruct
  */
-@Mapper
+@Mapper(uses = VisitMapper.class)
 public interface PetMapper {
 
     @Mapping(source = "owner.id", target = "ownerId")
@@ -26,6 +26,9 @@ public interface PetMapper {
     @Mapping(source = "ownerId", target = "owner.id")
     Pet toPet(PetDto petDto);
 
+    @Mapping(target = "id", ignore = true)
+    @Mapping(target = "owner", ignore = true)
+    @Mapping(target = "visits", ignore = true)
     Pet toPet(PetFieldsDto petFieldsDto);
 
     PetTypeDto toPetTypeDto(PetType petType);
diff --git a/src/main/java/org/springframework/samples/petclinic/mapper/PetTypeMapper.java b/src/main/java/org/springframework/samples/petclinic/mapper/PetTypeMapper.java
index 05617161ad4d1bcf9c4c4d3b933e29944ecef6f1..efb6d60bf4d6e893132305b27a3fcedaa06ef5d7 100644
--- a/src/main/java/org/springframework/samples/petclinic/mapper/PetTypeMapper.java
+++ b/src/main/java/org/springframework/samples/petclinic/mapper/PetTypeMapper.java
@@ -1,8 +1,9 @@
 package org.springframework.samples.petclinic.mapper;
 
 import org.mapstruct.Mapper;
-import org.springframework.samples.petclinic.rest.dto.PetTypeDto;
+import org.mapstruct.Mapping;
 import org.springframework.samples.petclinic.model.PetType;
+import org.springframework.samples.petclinic.rest.dto.PetTypeDto;
 import org.springframework.samples.petclinic.rest.dto.PetTypeFieldsDto;
 
 import java.util.Collection;
@@ -16,6 +17,7 @@ public interface PetTypeMapper {
 
     PetType toPetType(PetTypeDto petTypeDto);
 
+    @Mapping(target = "id", ignore = true)
     PetType toPetType(PetTypeFieldsDto petTypeFieldsDto);
 
     PetTypeDto toPetTypeDto(PetType petType);
diff --git a/src/main/java/org/springframework/samples/petclinic/mapper/UserMapper.java b/src/main/java/org/springframework/samples/petclinic/mapper/UserMapper.java
index 718e5410fe2dec587800d4f9552276c722698b69..2b5aea0fc1071c13b0d2ae20cd46cd041fd95942 100644
--- a/src/main/java/org/springframework/samples/petclinic/mapper/UserMapper.java
+++ b/src/main/java/org/springframework/samples/petclinic/mapper/UserMapper.java
@@ -1,10 +1,11 @@
 package org.springframework.samples.petclinic.mapper;
 
 import org.mapstruct.Mapper;
-import org.springframework.samples.petclinic.rest.dto.RoleDto;
-import org.springframework.samples.petclinic.rest.dto.UserDto;
+import org.mapstruct.Mapping;
 import org.springframework.samples.petclinic.model.Role;
 import org.springframework.samples.petclinic.model.User;
+import org.springframework.samples.petclinic.rest.dto.RoleDto;
+import org.springframework.samples.petclinic.rest.dto.UserDto;
 
 import java.util.Collection;
 
@@ -13,6 +14,9 @@ import java.util.Collection;
  */
 @Mapper
 public interface UserMapper {
+
+    @Mapping(target = "id", ignore = true)
+    @Mapping(target = "user", ignore = true)
     Role toRole(RoleDto roleDto);
 
     RoleDto toRoleDto(Role role);
diff --git a/src/main/java/org/springframework/samples/petclinic/mapper/VetMapper.java b/src/main/java/org/springframework/samples/petclinic/mapper/VetMapper.java
index 3c25e5142a01afa27a6da2c9c82b695c1c974719..fdcab6cd1ac160380747981683e26360011d3bb0 100644
--- a/src/main/java/org/springframework/samples/petclinic/mapper/VetMapper.java
+++ b/src/main/java/org/springframework/samples/petclinic/mapper/VetMapper.java
@@ -1,8 +1,9 @@
 package org.springframework.samples.petclinic.mapper;
 
 import org.mapstruct.Mapper;
-import org.springframework.samples.petclinic.rest.dto.VetDto;
+import org.mapstruct.Mapping;
 import org.springframework.samples.petclinic.model.Vet;
+import org.springframework.samples.petclinic.rest.dto.VetDto;
 import org.springframework.samples.petclinic.rest.dto.VetFieldsDto;
 
 import java.util.Collection;
@@ -14,6 +15,7 @@ import java.util.Collection;
 public interface VetMapper {
     Vet toVet(VetDto vetDto);
 
+    @Mapping(target = "id", ignore = true)
     Vet toVet(VetFieldsDto vetFieldsDto);
 
     VetDto toVetDto(Vet vet);
diff --git a/src/main/java/org/springframework/samples/petclinic/mapper/VisitMapper.java b/src/main/java/org/springframework/samples/petclinic/mapper/VisitMapper.java
index 7960c6d20a104c9f12c3574487499508c5b8955b..98dc2db97d2ed9d7920b4dcb1de66c2f61902f14 100644
--- a/src/main/java/org/springframework/samples/petclinic/mapper/VisitMapper.java
+++ b/src/main/java/org/springframework/samples/petclinic/mapper/VisitMapper.java
@@ -2,8 +2,8 @@ package org.springframework.samples.petclinic.mapper;
 
 import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
-import org.springframework.samples.petclinic.rest.dto.VisitDto;
 import org.springframework.samples.petclinic.model.Visit;
+import org.springframework.samples.petclinic.rest.dto.VisitDto;
 import org.springframework.samples.petclinic.rest.dto.VisitFieldsDto;
 
 import java.util.Collection;
@@ -16,6 +16,8 @@ public interface VisitMapper {
     @Mapping(source = "petId", target = "pet.id")
     Visit toVisit(VisitDto visitDto);
 
+    @Mapping(target = "id", ignore = true)
+    @Mapping(target = "pet", ignore = true)
     Visit toVisit(VisitFieldsDto visitFieldsDto);
 
     @Mapping(source = "pet.id", target = "petId")