स्प्रिंग बूट जेपीए अद्यतन अद्यतन करने के लिए केवल विशिष्ट क्षेत्रों

0

सवाल

तो मैं का सामना करना पड़ा के साथ इस मुद्दे को अद्यतन करने में एक इकाई DB. गुजर रहा है, जबकि एक पूरी इकाई और अद्यतन करने के केवल विशिष्ट क्षेत्रों में यह व्यवहार अछूता क्षेत्रों के रूप में नल, एक परिणाम के रूप में मैं एक अपवाद के बाद से उन क्षेत्रों में कर रहे हैं @Not-Null,

मैंने कोशिश की है की तलाश के लिए इसी तरह की समस्याओं, लेकिन नहीं कर सकता है मेरी समस्या ठीक करें.

कंपनी की इकाई:

@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<>();
}

अधिकांश क्षेत्रों रहे हैं @NotNull के निर्माण के लिए, हालांकि, मैं अद्यतन करने की आवश्यकता इकाई है, कभी-कभी केवल विशिष्ट क्षेत्रों.

सेवा:

@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";
}

के रूप में आप देख सकते हैं एक ENTITY पारित किया गया है का कारण बनता है जो आराम का गुण होना करने के लिए स्वचालित रूप से अशक्त नहीं है अगर संशोधित किया गया है ।

नियंत्रक:

  @PutMapping("/updateCompany/{id}")
    @ResponseStatus(HttpStatus.ACCEPTED)
    public String updateCompany(@PathVariable int id, @RequestBody Company company) throws DoesNotExistException {
        return admin.updateCompany(id,company);
    }

अपवाद:

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}'}
]

धन्यवाद.

hibernate java jpa
2021-11-21 18:38:43
1

सबसे अच्छा जवाब

0

नियंत्रक बाध्यकारी है मानों आप में पारित करने के लिए एक नई कंपनी की इकाई है. नई इकाई नहीं है संलग्न करने के लिए दृढ़ता के संदर्भ में, यह नहीं करता है, राज्य की पूर्व-मौजूदा इकाई है । जब आप इसे बचाने के लिए जेपीए सोचता है कि आप चाहते हैं, अशक्त करने के लिए सभी क्षेत्रों के बाहर आप की जरूरत नहीं है के लिए मूल्यों.

इसके बजाय, आप हो सकता है के नियंत्रक से बाइंड अपने तर्क के लिए एक DTO. फिर सेवा में आप को देखने के मौजूदा ग्राहक का उपयोग कर, findById, और प्रतिलिपि फ़ील्ड में आप चाहते हैं अद्यतन से डीटीओ संस्था के लिए. फिर कॉल saveAndFlush में गुजर अद्यतन इकाई है ।

यह की तरह लग रहा है वहाँ पर एक सुधार डीटीओ, आप का उपयोग कर सकते हैं aJsonPatch पकड़ करने के लिए अद्यतन में पारित कर दिया, देख https://www.baeldung.com/spring-rest-json-patch. पैच विधि की तरह लगता है एक बेहतर मैच के लिए आप क्या कर रहे हैं वैसे भी.

सर्वर पर महत्वपूर्ण बात यह है को देखने के लिए मौजूदा इकाई इतनी है कि आप एक इकाई है कि संलग्न करने के लिए दृढ़ता के संदर्भ में है और अपने सभी क्षेत्रों में वर्तमान.

2021-11-21 20:00:13

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में