हटाता है मेरे पास User
इकाई और Role
इकाई है। रिश्ते इस तरह परिभाषित किया गया है:वसंत डेटा जेपीए मूल क्वेरी फेंकने अपवाद
@OneToMany
@JoinTable(name="USER_ROLES", [email protected](name="ROLE_ID"))
private List<Role> roles = null;
अब, जब मैं एक भूमिका हटाने के लिए, मेरे पास है कि उस भूमिका सभी उपयोगकर्ताओं से भूमिका को हटाने के लिए की जरूरत है। आम तौर पर आप इस भूमिका के साथ सभी उपयोगकर्ताओं को देखकर, सूची से भूमिका को हटाने और उपयोगकर्ता को सहेजकर ऐसा कुछ करेंगे। हालांकि, जब दस लाख से अधिक उपयोगकर्ता हो सकते हैं, तो मैं ऐप में इस कई इकाइयों पर लूप नहीं करना चाहता हूं। इसलिए, मैं USER_ROLES
तालिका में पंक्तियों को हटाने के लिए मूल क्वेरी का उपयोग करना चाहता हूं। मैं अपने भंडार को यह जोड़ने की कोशिश की:
@Query(value="DELETE FROM user_roles WHERE role_id = ?1", nativeQuery=true)
public void deleteRoleFromUsersWithRole(Long roleId);
हालांकि, जब मैं यह कर, मैं लॉग में निम्न देखें:
[EL Fine]: sql: 2013-11-02 14:27:14.418--ClientSession(707349235)--Connection(2096606500)--Thread(Thread[http-bio-8080-exec-4,5,main])--DELETE FROM user_roles WHERE role_id = ?
bind => [1000110139999999953]
[EL Fine]: sql: 2013-11-02 14:27:14.478--ClientSession(707349235)--Thread(Thread[http-bio-8080-exec-4,5,main])--SELECT 1
[EL Warning]: 2013-11-02 14:27:14.482--UnitOfWork(1795045370)--Thread(Thread[http-bio-8080-exec-4,5,main])--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: org.postgresql.util.PSQLException: No results were returned by the query.
Error Code: 0
Call: DELETE FROM user_roles WHERE role_id = ?
bind => [1000110139999999953]
Query: DataReadQuery(sql="DELETE FROM user_roles WHERE role_id = ?")
मुझे समझ नहीं आता No results were returned by the query.
क्या कह रहा है। रिकॉर्ड डेटाबेस से हटा दिया जाता है, लेकिन यह अपवाद सबकुछ उड़ा रहा है।
क्या कोई मुझे बता सकता है कि मैं यहां क्या कर रहा हूं?
आह, मैं अभी भी वसंत डेटा और जेपीए के लिए काफी नया हूं। मुझे लगता है मुझे दस्तावेज़ों में अधिक समय बिताना चाहिए। मुझे ध्यान रखना चाहिए कि इसे काम करने के लिए मुझे '@ ट्रांजेक्शनल' एनोटेशन भी जोड़ना पड़ा। आपकी सहायता के लिए धन्यवाद. – dnc253