2009-11-15 17 views
7

"नाम प्रश्नों में त्रुटियां" मैं निम्नलिखित नामित SQL क्वेरी को परिभाषित किया है:NHibernate

<sql-query name="ItemSearch"> 
    <return class="ItemSearchResult"> 
     <return-property name="Item" column="ItemId" /> 
     <return-property name="Distance" column="Distance" /> 
    </return> 
    SELECT 
     Items.*, 
     dbo.DistanceBetween(Latitude, Longitude, :lat, :long) AS Distance 
    FROM Items 
    WHERE Contains(Name, :keywords) 
    ORDER BY Distance ASC 
</sql-query> 

जब भी मैं अपने आवेदन चलाने का प्रयास, मैं सामान्य त्रुटि "नाम प्रश्नों में त्रुटियां: {ItemSearch}" मिलता है। क्या यहां कुछ स्पष्ट रूप से गलत है?

public class ItemSearchResult 
{ 
    public Item Item {get; set;} 
    public double Distance {get; set;} 
} 
+1

सुनिश्चित करें कि आपके पास ItemSearchResult (i.e) के लिए मैपिंग फ़ाइल है जिसे आपने ItemSearchResult.hbm.xml परिभाषित किया है। यदि यह मौजूद नहीं है तो nHibernate को यह नहीं पता होगा कि गुणों में अपने चयन कॉलम को कैसे मैप करना है। –

उत्तर

1

यहाँ मेरी कोड से एक नमूना है: केवल कुछ चीजें हैं जो NHibernate संस्करण के बीच अलग हैं और मेरी हाइबरनेट है

ItemSearchResult वर्ग एक बहुत ही सरल आवरण वर्ग कि इस तरह दिखता है है ऑटो-आयात और मैं पैकेज मान लेगा।

<hibernate-mapping auto-import="true" package="PackageName"> 
    <class name="Name of class to maptop"> 
    <composite-id> 
     <key-property name="<name of parameter>" type="TYPE"/> 
    </composite-id> 
    <property name="COLUMNNAME" type="TYPE"/> 
    </class> 
    <sql-query name="queryName"> 
     <return alias="dr" class="Name of class to map to"/> 
select columnName as {dr.nameofColumn}, 
    from table 
</sql-query> 
</hibernate-mapping> 

मुझे लगता है कि समस्या यह है कि अपने कोड में मौजूद है कि आप विशेष रूप से कॉलम नक्शा नहीं किया है और कैसे वे अपनी कक्षा के लिए नक्शे।

नोट: यदि कोई फ़ील्ड है जो NHibernate XML प्रारूप से मेल नहीं खाता है तो मुझे टिप्पणियों के माध्यम से बताएं। मेरे पास अभी मेरी एनएचबीर्नेट मैपिंग फाइलों तक पहुंच नहीं है।

3

क्या आपके पास ItemSearchResult के लिए सही .hbm.xml है? यदि आप अपनी क्वेरी में ItemSearchResult का उपयोग करते हैं, तो इसके लिए आपको .hbm.xml होना चाहिए। बस संस्थाओं की तरह।

+1

बस इस समस्या का सामना करना पड़ा - वहां फ़ाइल थी, लेकिन यह ItemSearchResult.xml था, आइटम ItemRearchult.hbm.xml नहीं था। इसे देखने के लिए एक लंबा समय लगा। – jmoreno

+0

यह इस उत्तर से काफी समय है। लेकिन आप '.hbm' जोड़ने का प्रयास कर सकते हैं ताकि एक्सटेंशन '.hbm.xml' होगा। यह समस्या को हल करने में मदद कर सकता है। –