मैं अपनी मुट्ठी MyBatis एप्लिकेशन लिख रहा हूं और मैं @Select के आसपास अटक गया। मुझे नहीं पता कि मेरी @Select परिभाषा में क्या समस्या है, सब कुछ ठीक लगता है लेकिन मुझे एक Parameter not found
अपवाद मिला है।
जब मैं अपने @Insert स्टेटमेंट में पैरामीटर पास करता हूं तो मैंने उसी पैटर्न का पालन किया है और यह बिना किसी समस्या के काम करता है।
मैं माईबैटिस 3.4.2 का उपयोग करता हूं।
यह मेरा @Select है:
@Select("SELECT * "
+ "FROM configuration "
+ "WHERE key_name = #{key} AND "
+ "(#{userId} IS NULL AND user_id IS NULL) OR user_id = #{userId} AND "
+ "status = 1")
Configuration findByKeyAndUserId(String key, Long userId);
अपवाद जो मुझे मिला:
org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: org.apache.ibatis.binding.BindingException: Parameter 'key' not found. Available parameters are [arg1, arg0, param1, param2]
### Cause: org.apache.ibatis.binding.BindingException: Parameter 'key' not found. Available parameters are [arg1, arg0, param1, param2]
2 जवाब
जब आप एक एकल पैरामीटर ऑब्जेक्ट पास करते हैं, तो गुणों को सीधे गेटर या मानचित्र के लिए कुंजी सेट के माध्यम से एक्सेस किया जाता है। जब आप विधि में कई पैरामीटर पास करना चाहते हैं, तो आपको पैरामीटर को एनोटेशन के साथ नाम देना होगा:
Configuration findByKeyAndUserId(@Param("key") String key, @Param("userId") Long userId);
यह एनोटेशन आधारित सिंटैक्स वास्तव में की-वैल्यू मैप की तरह व्यवहार करता है। कुंजियाँ @Param द्वारा प्रदान की जाती हैं। पैरामीटर चर के लिए आपके द्वारा चुना गया नाम दिखाई नहीं दे रहा है।
कृपया JDK 8 के बाद से उपलब्ध कराए गए -parameters
संकलन विकल्प का प्रयास करें। आप @Param
एनोटेशन को छोड़ सकते हैं।
देखें https://github.com/mybatis/mybatis-3/issues/549 ए>
धन्यवाद।
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
java
जावा एक उच्च स्तरीय प्रोग्रामिंग भाषा है। इस टैग का उपयोग तब करें जब आपको भाषा का उपयोग करने या समझने में समस्या हो। इस टैग का उपयोग शायद ही कभी किया जाता है और इसका उपयोग अक्सर [वसंत], [वसंत-बूट], [जकार्ता-ई], [Android], [javafx], [हडूप], [श्रेणी] और [मावेन] के साथ किया जाता है।