का चयन कैसे करें मेरे पास एक बहुत ही सरल एसक्यूएल है जो मुझे करने की ज़रूरत है।जेपीक्यूएल, कुछ
मेरे पास ProcessUser
, Role
और ProcessUserRole
तालिका है। एक सीधी आगे कई
मैं सभी ProcessUser
का चयन करना चाहता हूं जिसमें व्यवस्थापक की भूमिका भी है।
हालांकि मेरा जेपीक्यूएल विफल रहता है क्योंकि मेरे उपयोगकर्ता के पास रोल ऑफिसर भी है, इसलिए इसे सूची में पुनर्प्राप्त किया जाता है।
entityManager.createQuery("SELECT p FROM " + ProcessUser.class.getName()
+ " p join p.roles role WHERE role.name NOT IN ('sysadmin')").getResultList();
उत्पन्न एसक्यूएल है:
select distinct processuse0_.id as id8_, processuse0_.position as position8_, processuse0_.username as username8_, processuse0_.organization_id as organiza9_8_, processuse0_.passwordHash as password4_8_, processuse0_.fromEmail as fromEmail8_, processuse0_.firstname as firstname8_, processuse0_.lastname as lastname8_, processuse0_.processes as processes8_ from ProcessUser processuse0_ inner join ProcessUserRoles roles1_ on processuse0_.id=roles1_.userId inner join Role role2_ on roles1_.roleId=role2_.id where ( role2_.name not in ( 'sysadmin' ) )
आप कहते हैं कि आप व्यवस्थापक की भूमिका शामिल करना चाहते हैं , लेकिन आपका नमूना SysAdmin में नहीं है ROLE NAME दिखाता है। क्या तुम समझा सकते हो? –
@ शेरविन - आपको अपने टैग से सावधान रहना होगा; नीचे दिए गए अधिकांश उत्तर गलत हैं क्योंकि आपने अपना प्रश्न "एसक्यूएल" (अब जेपीक्यूएल में बदल दिया है) – ChssPly76
नहीं किया है, नहीं, मैं व्यवस्थापक (sysadmin) शामिल नहीं करना चाहता हूं। ProcessUser एक उपयोगकर्ता है, और एक sysadmin, इस प्रकार मेरा चयन मुझे वह नहीं मिलता है जो मैं चाहता हूं। मैं चाहता हूं कि उपयोगकर्ता को sysadmin भूमिका होने पर ओमेट किया जाए। –