कहें कि मेरे पास एक इकाई MyEntity
है, और इसमें फॉर्मूला-आधारित प्रॉपर्टी fmlaProp
है। अब कहते हैं कि मैं एक मानदंड बनाने:हाइबरनेट - फ़ॉर्मूला प्रॉपर्टी द्वारा ऑर्डरिंग मानदंड
s.createCriteria(MyEntity.class)
.setProjection(
Projections.distinct(
Projections.property("fmlaProp")))
.addOrder(Order.asc("fmlaProp"));
इस मामले मैं निम्नलिखित एसक्यूएल पाने में
:
SELECT DISTINCT fmlaProp-sql FROM MY_ENTITY_TABLE ORDER BY fmlaProp-sql
कौन सा ओरेकल कह रही है कि आदेश-अभिव्यक्ति है पर एक त्रुटि देता है गैर चयन किया। फिर मैंने निम्नलिखित मानदंडों की कोशिश की:
s.createCriteria(MyEntity.class)
.setProjection(
Projections.distinct(
Projections.alias(
Projections.property("fmlaProp"),
"alias1"))
.addOrder(Order.asc("alias1"));
जो "उपनाम 1 द्वारा आदेश" उत्पन्न करता है जो ठीक काम करता है। लेकिन यह बदसूरत है - कोड को उन सूत्र गुणों के "पता" होना चाहिए, जो "एक बार लिखें" सिद्धांत का उल्लंघन करते हैं। उस पर कोई विचार या सुझाव? पहले ही, आपका बहुत धन्यवाद।
'-sql' भाग क्या है? – cherouvim