2015-03-23 6 views
15

का उपयोग कर एकल फ़ील्ड अपडेट करें मैं वसंत-डेटा के भंडारों का उपयोग कर रहा हूं - बहुत सुविधाजनक बात है लेकिन मुझे एक समस्या का सामना करना पड़ा। मैं आसानी से पूरी इकाई को अपडेट कर सकते हैं लेकिन मेरा मानना ​​है कि यह व्यर्थ है जब मैं केवल एक ही क्षेत्र अद्यतन करने की आवश्यकता:वसंत डेटा jpa

@Entity 
@Table(schema = "processors", name = "ear_attachment") 
public class EARAttachment { 

    private Long id; 
    private String originalName; 
    private String uniqueName;//yyyy-mm-dd-GUID-originalName 
    private long size; 
    private EARAttachmentStatus status; 

मैं सिर्फ विधि बचाने कॉल अद्यतन करने के लिए।

batching 1 statements: 1: update processors.ear_attachment set message_id=100, 
original_name='40022530424.dat', 
size=506, 
status=2, 
unique_name='2014-12-16-8cf74a74-e7f3-40d8-a1fb-393c2a806847-40022530424.dat' 
where id=1 

मैं इस तरह कुछ बात देखना चाहेंगे: लॉग में मैं followwing देख

batching 1 statements: 1: update processors.ear_attachment set status=2 where id=1 

वसंत के खजाने नाम सम्मेलनों का उपयोग कर कुछ चुनने के लिए सुविधाओं की एक बहुत कुछ है, हो सकता है वहाँ कुछ इसी तरह है अद्यतनफॉरस्टैटस (int स्थिति) जैसे अपडेट के लिए;

उत्तर

22

आप कुछ इस तरह की कोशिश कर सकते हैं:

@Modifying 
@Query("update EARAttachment ear set ear.status = ?1 where ear.id = ?2") 
int setStatusForEARAttachment(Integer status, Long id); 

तुम भी नामित पैरामीटर, इस तरह उपयोग कर सकते हैं:

@Modifying 
@Query("update EARAttachment ear set ear.status = :status where ear.id = :id") 
int setStatusForEARAttachment(@Param("status") Integer status, @Param("id") Long id); 

पूर्णांक वापसी मान पंक्तियों की संख्या है कि जहां अद्यतन है। आप void रिटर्न का भी उपयोग कर सकते हैं।

reference दस्तावेज़ीकरण में और देखें।

+0

धन्यवाद, अभी काम करें, लेकिन मुझे आश्चर्य है कि यह इकाईManager.creatQuery (..) का उपयोग करने से बेहतर है या नहीं? मैं कुछ प्रकार की सुरक्षित खोज कर रहा हूं –

+0

@DmitriiBorovoi यह 'em.createQuery' भी कॉल करेगा, अगर मुझे सही याद है, तो समीकरण है। यदि आप कुछ प्रकार सुरक्षित चाहते हैं, तो आपको यह जानने के लिए एक तरीका चाहिए कि क्वेरी बनाने के लिए कौन से गुण संशोधित किए गए थे। इसके बाद, आप क्वेरी निष्पादित करने के लिए कस्टम रिपॉजिटरी का उपयोग कर सकते हैं (http://docs.spring.io/spring-data/data-jpa/docs/current/reference/html/#repositories.custom-implementations)। –

संबंधित मुद्दे