स्प्रिंग-डेटा जेपीए क्वेरी के रूप में अगली क्वेरी लिखने की कोशिश करते समय मैं इस समय फंस गया हूं:

with recursive s as (
select *
from t
where file_id = '12345'
union all
select dfs.*
from t dfs
join s on s.file_id = dfs.parent_folder_id
)
select * from s;

मैंने अगली कोशिश की है:

@Query(value = "with recursive subfiles as (
select * from t where file_id=?1 
union all 
dfs.* from t dfs join subfiles s 
on s.file_id = dfs.parent_folder_id) 
select file_id from subfiles", nativeQuery = true)

लेकिन मुझे अगली त्रुटि मिलती है:

Method threw 'org.springframework.dao.InvalidDataAccessResourceUsageException' exception.
could not extract ResultSet; SQL [n/a]
org.hibernate.exception.SQLGrammarException: could not extract ResultSet
org.postgresql.util.PSQLException: ERROR: syntax error at or near "dfs"

क्वेरी में एक विशिष्ट आईडी के लिए सभी प्रत्यक्ष या अप्रत्यक्ष आश्रित बच्चों की सूची होनी चाहिए। (एक समान पोस्ट यहां)

0
codrin 25 फरवरी 2020, 21:50
जब आप इसे सीधे पोस्टग्रेस्क्ल क्लाइंट में निष्पादित करते हैं तो क्या क्वेरी @Query एनोटेशन में होती है? एनोटेशन किस प्रकार की विधि पर है? क्या इसमें Pageable जैसे अतिरिक्त पैरामीटर हैं?
 – 
Jens Schauder
26 फरवरी 2020, 11:54
हां, यह ठीक से चल रहा था, लेकिन मैं इसे ठीक करने में कामयाब रहा।
 – 
codrin
3 मार्च 2020, 15:06
यह एक त्रुटि के साथ आ रहा था क्योंकि मैं t तालिका के लिए एक स्थिर अंतिम चर का उपयोग कर रहा था। दुर्भाग्य से, मान फ़ील्ड केवल संकलन-समय स्थिरांक स्वीकार करता है।
 – 
codrin
3 मार्च 2020, 15:40

1 उत्तर

मैंने अगले प्रारूप का उपयोग करके इसे ठीक करने में कामयाबी हासिल की है:

@Query(nativeQuery = true,
value = "with recursive subfiles as " +
  "(select * " +
  "from t " +
  "where file_id=?1 " +
  "union all " +
  "select dfs.* " +
  "from t dfs " +
  "join subfiles s " +
  "on s.file_id = dfs.parent_folder_id) " +
"select file_id from subfiles")
List<String> listAllByParentId(String folderId);
0
codrin 3 मार्च 2020, 15:11