मुझे एक ही समस्या है और कम से कम मेरे मामले में, कारण जानने के लिए कोड को खोदने में सक्षम था। मुझे नहीं पता कि आपके लिए भी यही समस्या होगी या नहीं लेकिन यह मददगार हो सकता है।
आपके स्टैक ट्रेस से मैं देख सकता हूँ कि आपके पास स्कीमा को अपग्रेड करने के लिए hibernate.hbm2ddl.auto सेट है। इसके भाग के रूप में, यह उन सभी तालिकाओं के मेटाडेटा को देखने का प्रयास कर रहा है जिनके बारे में हाइबरनेट जानता है और उनमें से एक के लिए एक अस्पष्ट उत्तर प्राप्त कर रहा है क्योंकि मेटाडेटा क्वेरी तालिका की एक पंक्ति से अधिक लौट रही है या मेटाडेटा देखें।
मेरे मामले में यह तालिकाओं के लिए हमारे नामकरण सम्मेलन के कारण हुआ था। हमारे पास "एएए_बीबीबी" नामक एक टेबल थी जिसके लिए यह गलत हो रहा था। जहाँ तक मेरी जानकारी है अब तालिका नाम में अंडरस्कोर का उपयोग पूरी तरह से स्वीकार्य है और यह काफी सामान्य प्रथा है। हालांकि अंडरस्कोर एकल वर्ण के लिए SQL वाइल्डकार्ड भी है; डेटाबेस मेटाडेटा के लिए कोड में देखकर मैं देख सकता हूं कि यह DatabaseMetaData.getTables(...) विधि में "WHERE table_name LIKE ..." कर रहा है, जो कि हाइबरनेट यहां उपयोग कर रहा है।
अब, मेरी स्कीमा में मेरे पास "एएए 1 बीबीबी" नामक दूसरी तालिका भी थी और इसलिए ये दोनों मेटाडेटा लुकअप से मेल खाते थे और इसलिए इनमें से प्रत्येक तालिका के लिए मेटाडेटा पंक्ति लौटा दी गई थी। हाइबरनेट विधि को केवल नीचे गिरने के लिए लिखा जाता है यदि तालिका मेटाडेटा लुकअप से सेट परिणाम एक से अधिक पंक्ति देता है। मुझे लगता है कि इसे उपलब्ध पंक्तियों की जांच करनी चाहिए और पता लगाना चाहिए कि क्या कोई है जो निर्दिष्ट तालिका नाम के साथ सटीक मिलान है।
मैंने एक ही परिणाम के साथ Oracle और MySQL दोनों के लिए इसका परीक्षण किया।