2017-04-18 75 views
1
SELECT * FROM reviews 
    WHERE id in (SELECT review_id FROM reviews_businesses_users_bridge WHERE user_id = 1) 
Union 
SELECT * FROM reviews 
    WHERE id in (select review_id FROMreviews_drivers_users_bridge WHERE user_id = 1); 

此查詢完美地與工作臺的工作,但是當我在我的應用程序使用此查詢它給錯誤..執行復雜查詢

@Query(value = "SELECT * FROM reviews WHERE id in (SELECT review_id FROM reviews_businesses_users_bridge WHERE user_id = ?) Union SELECT * FROM reviews WHERE id in (select review_id FROM reviews_drivers_users_bridge WHERE user_id = ?)",nativeQuery = true) 
List<Review> getAllReceivedReviewsByUserId(Long userId); 

,並在日誌中的錯誤是「沒有找到處理程序法」,這不會使任何意義對我來說,因爲如果我讓喜歡

@Query(value = "SELECT * FROM reviews WHERE id in (SELECT review_id FROM reviews_businesses_users_bridge WHERE user_id = ?)",nativeQuery = true) 
List<Review> getAllReceivedReviewsByUserId(Long userId); 

查詢那麼它的工作完美,當我添加了一些更復雜則顯示錯誤。

+0

post error may be? –

+0

您在sql中只有一個參數'Long userId'和多個綁定變量佔位符。 –

+0

yes..Thank你指出我的錯誤 –

回答

2

嘗試使用名爲PARAMS。您使用兩個問號,所以休眠期望第二個參數也要填寫

@Query(value = "SELECT * FROM reviews WHERE id in (SELECT review_id FROM reviews_businesses_users_bridge WHERE user_id = :userId) Union SELECT * FROM reviews WHERE id in (select review_id FROM reviews_drivers_users_bridge WHERE user_id = :userId)",nativeQuery = true) 
List<Review> getAllReceivedReviewsByUserId(@Param("userId") Long userId); 
+0

感謝阿列克謝的原因.. –