आपका प्रश्न संदिग्ध है - पहले पैराग्राफ में आप इंडेक्स द्वारा कॉलम और दूसरे में, एसक्यूएल नाम से संदर्भित करना चाहते हैं। चूंकि इंडेक्स द्वारा आसान है, मैं नाम से मान लेगा।
सबसे पहले, आप अंतर्निहित JDBC कनेक्शन का उपयोग करने की doWork
विधि का उपयोग करें और के रूप में आप शुद्ध JDBC के साथ होता है इसे संभाल कर सकते हैं:
session.doWork(new Work() {
public void execute(Connection connection) throws SQLException {
connection.prepareStatement(...
}
});
या, आप जो कॉलम का String[]
रिटर्न query.getReturnAliases
उपयोग कर सकते हैं नाम। प्रभावशीलता के लिए, मैं शायद इंडेक्स के लिए उपनाम के Map
का निर्माण करूंगा और फिर आप result[map.get("column name")]
जैसे कुछ कर सकते हैं।
लेकिन वास्तव में, हाइबरनेट xml मैपिंग का उपयोग करते समय समग्र कुंजी को आसानी से संभालता है (एनोटेशन के साथ प्रयास नहीं किया गया है)। यह थोड़ा और अधिक काम करता है और जटिल संबंधों के साथ कुछ मुद्दे हैं (मुख्य रूप से जब विदेशी कुंजी नाम/स्पैन मेल नहीं खाते हैं), लेकिन एक बार जब आप आईडी क्लास बनाते हैं और इसे मैप करते हैं, तो आप एचक्यूएल/मानदंड के साथ रह सकते हैं और आलसी लोड हो रहा है, सरल मिलती है, गंदे जाँच, आदि
स्रोत
2010-04-09 07:58:27
बीटीडब्ल्यू, मेरे पास "table1.price के रूप में select1 से ..." के रूप में एक एसक्यूएल क्वेरी है और कुछ कारणों से एलियास टॉन्टीटीमैप रीसेटल्ट ट्रांसफॉर्मर कीमत 1 मैपिंग नहीं कर रहा है। अगर मैं करता हूं "चुनें (तालिका 1।कीमत * 1) से मूल्य 1 के रूप में ... "हालांकि यह काम करता है। इसलिए मुझे लगता है कि मुझे ट्रांसफॉर्मर में एक बग मिला .. – Ricardo
'addScalar' घोषणाओं को जोड़ने के लिए याद रखें (उदाहरण के लिए 'query.addScalar (" myAlias ", IntegerType.INSTANCE) ') अन्यथा आपको गलत उपनाम (जैसे ऊपरी मामले में परिवर्तित) या गलत डेटा प्रकार मिल सकते हैं। –
किसी भी तरह मुझे इसे आयात करने के लिए यह आयात जोड़ना होगा: आयात org.hibernate.transform.AliasToEntityMapResultTransformer – ian0411