मेरे पास इस तरह की एक सारणी है:केवल एचक्यूएल उपयोग के लिए संपत्ति को कैसे मैप करें (हाइबरनेट में)?
id | name | score
एचबीआरनेट के साथ एक्सएमएल के माध्यम से पीओजेओ में मैप किया गया। स्कोर कॉलम मुझे केवल oder by
में चाहिए - एचक्यूएल में खंड। स्कोर कॉलम के लिए मान को एल्गोरिदम द्वारा गणना की जाती है और एसक्यूएल बैच प्रक्रिया (जेडीबीसी) के माध्यम से हर 24 घंटों में अपडेट किया जाता है। इसलिए मैं अपने POJO को उन गुणों के साथ प्रदूषित नहीं करना चाहता हूं जिन्हें मुझे रनटाइम पर आवश्यकता नहीं है।
एक कॉलम के लिए जो कोई समस्या नहीं हो सकती है, लेकिन मेरे पास कई अलग-अलग स्कोर कॉलम हैं। क्या एचक्यूएल उपयोग के लिए केवल संपत्ति को मैप करने का कोई तरीका है?
उदाहरण के लिए:
<property name="score" type="double" ignore="true"/>
ताकि मैं अभी भी ऐसा कर सकूं:
from Pojo p order by p.score
लेकिन मेरा POJO कार्यान्वयन इस तरह दिख सकता है:
public class Pojo
{
private long id;
private String name;
// ...
}
कोई सेटर नहीं score
प्रदान किया गया या कार्यान्वयन में संपत्ति जोड़ा गया। जावा के लिए नवीनतम हाइबरनेट संस्करण का उपयोग कर
।
अद्यतन:
एक परिपूर्ण दुनिया में इसे इस तरह किया जा सकता है (Pascal Thivent के लिए धन्यवाद):
<property name="score" access="noop" insert="false" update="false"/>
लेकिन हमारी वास्तविक दुनिया में a bug since years मौजूद है जो कोई भी देखभाल नहीं करता के बारे में। तो क्या किसी के पास कामकाज के लिए कोई सुझाव है?
इस नोप चीज़ के बारे में, सावधान रहें! यह मैप किए गए जावा ऑब्जेक्ट का हिस्सा नहीं होगा, लेकिन यह अभी भी एचक्यूएल मेमोरी में मौजूद होगा! मैं एक बार परिणाम के हिस्से के रूप में एक बीएलओबी क्षेत्र नहीं प्राप्त करना चाहता था क्योंकि वे जावा मेमोरी भर रहे थे लेकिन इसे क्वेरी में विचार किया जाना था। मैंने सोचा कि मैं सुरक्षित था लेकिन आउटऑफ मेमरी त्रुटियों को समाप्त कर दिया क्योंकि एचक्यूएल क्वेरी अभी भी सभी बीएलओबी लोड कर रही थी, भले ही वे परिणाम का हिस्सा न हों। – Icegras