2013-10-17 5 views
5

में तालिका स्तंभ नाम जाओ मैं Criteria वर्ग हाइबरनेट तालिका के सभी रिकॉर्ड प्राप्त करने के लिए उपयोग कर रहा हूँ:हाइबरनेट

Criteria criteria = session.createCriteria(AppTaskConfig.class) 

मैं स्तंभ नाम भी प्राप्त करने के लिए के रूप में मैं JSON प्रारूप में सेट परिणाम बदलने की आवश्यकता चाहते हैं।

+0

यहां देख सकते हैं http://stackoverflow.com/q/2023700/366964 सहायता कर सकता है। –

उत्तर

0

इकाई के कॉलम नाम क्या हैं? इकाई कुछ तालिका के कॉलम का उपयोग कर सकती है और अन्य के लिए फ़ील्ड नहीं हो सकती है।

इकाई एक और इकाई वर्ग का विस्तार कर सकती है, इसलिए इकाई वर्ग के फ़ील्ड विभिन्न तालिकाओं के कॉलम द्वारा दर्शाए जाते हैं।

आप देशी एसक्यूएल क्वेरी चला सकते हैं और तालिका कॉलम देख सकते हैं।

13

column names प्राप्त करने के लिए, सबसे पहले आपको org.hibernate.metadata.ClassMetadata का उपयोग कर संस्था की properties खोजने की जरूरत है:

ClassMetadata classMetadata = sessionFactory.getClassMetadata(AppTaskConfig.class); 
String[] propertyNames = classMetadata.getPropertyNames(); 

जहां propertyNamesAppTaskConfig की संपत्ति के नाम का प्रतिनिधित्व करने स्ट्रिंग्स की एक सरणी है।

अभी सेवा का उपयोग हाइबरनेट org.hibernate.cfg.Configuration वस्तु आप properties के स्तंभ नाम पा सकते हैं:

for (String property : propertyNames) { 
    Configuration configuration = sessionFactoryBean.getConfiguration(); 
    PersistentClass persistentClass = configuration 
        .getClassMapping(Details.class.getName()); 
    String columnName = ((Column) persistentClass.getProperty(property) 
        .getColumnIterator().next()).getName(); 
} 
+2

सत्र फैक्ट्रीबीन यहाँ क्या है? मुझे नहीं लगता कि यह सत्र फैक्ट्री है। – instanceOfObject

+2

@instanceOfObject, कृपया इस दृष्टिकोण का पालन करते हुए https://developer.jboss.org/thread/189593?start=0&tstart=0 – Stony

+1

@ साईकाई लिंक देखें, हमें प्राथमिक कुंजी विवरण नहीं मिल रहे हैं। कृपया एक और समाधान प्रदान करें। –

0
String[] columnNames = getSessionFactory().getClassMetadata(Employee.class).getPropertyNames(); 

    org.hibernate.type.Type[] columnTypes = getSessionFactory().getClassMetadata(Employee.class).getPropertyTypes(); 

इस काम यह है ठीक से कोशिश ...

0

आप के लिए उपयोग करने के लिए प्रतिबिंब एपीआई का उपयोग कर सकते हैं कॉलम ओ जॉइन कॉलम जैसे फ़ील्ड/गेटर की जेपीए एनोटेशन घोषित की।

import javax.persistence.Column; 
import javax.persistence.JoinColumn; 

// get declared field 
Field field = persistentClass.getDeclaredField("property"); 

// get declared method 
Method method = persistentClass.getMethod("get"+property.substring(0,1).toUpper()+property.substring(1))); 

// access to declared annotations or field or method to find Column or JoinColumn