Ben DB bir varlık güncelleme ile bu sorun ile karşılaştı. bütün bir varlığı geçerken ve yalnızca belirli alanları güncellerken, dokunulmamış alanları null olarak ele alır, sonuç olarak bu alanlar olduğu için bir istisna alırım @Not-Null
,
Benzer sorunları aramayı denedim ancak sorunumu çözemedim.
Şirket KURULUŞU:
@Entity
@Table (name = "companies")
@Data
@ToString(exclude = "perfumes")
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Company {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@NotNull
private String name;
@NotNull
@Email(message = "Wrong input. please enter a VALID email address")
private String email;
@NotNull
@Size(min = 4, max = 14, message = "Password range must be between 4 - 14 digits")
private String password;
@NotNull
@Enumerated(EnumType.STRING)
private Country country;
@Singular
@OneToMany(mappedBy = "company", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List<Perfume> perfumes = new ArrayList<>();
}
Çoğu alan şunlardır @NotNull
bununla birlikte, oluşturmak için varlığı, bazen yalnızca belirli alanları güncellemem gerekiyor.
Hizmet:
@Override
public String updateCompany(int id, Company company) throws DoesNotExistException {
if(!companyRepository.existsById(id))
{
throw new DoesNotExistException(id);
}
companyRepository.saveAndFlush(company);
return company.getName() + " has been UPDATED";
}
gördüğünüz gibi bir ENTITY
değiştirilmezse özniteliklerin geri kalanının otomatik olarak null olmasına neden olan geçirildi.
Denetleyici:
@PutMapping("/updateCompany/{id}")
@ResponseStatus(HttpStatus.ACCEPTED)
public String updateCompany(@PathVariable int id, @RequestBody Company company) throws DoesNotExistException {
return admin.updateCompany(id,company);
}
ÖZEL:
Validation failed for classes [com.golden.scent.beans.Company] during update time for groups [javax.validation.groups.Default, ]
List of constraint violations:[
ConstraintViolationImpl{interpolatedMessage='must not be null', propertyPath=password, rootBeanClass=class com.golden.scent.beans.Company, messageTemplate='{javax.validation.constraints.NotNull.message}'}
]
Teşekkürler.