2011-11-28 12 views
5

क्या जावा एपीआई के माध्यम से <persistence-unit-metadata> में जानकारी तक पहुंच बनाना संभव है?एक्सेस जेपीए <persistence-unit-metadata> प्रोग्रामेटिक रूप से

<persistence-unit-metadata> 
    <persistence-unit-defaults> 
     <schema>MySchema</schema> 
    </persistence-unit-defaults> 
</persistence-unit-metadata> 

मैं जेपीए एपीआई या EclipseLink एपीआई, कार्यान्वयन मैं का उपयोग करें जो के माध्यम से स्कीमा "MySchema" पढ़ने के लिए करना चाहते हैं।

कुछ ऐसा: entityManager.getDefaults()। GetSchema(); किसी भी ग्रहण लिंक को कास्ट या उपयोग करना ठीक है, यह इसके लिए ठीक है।

आप

+0

यह क्या है कि आप वास्तव में हासिल करना चाहते हैं? "जानकारी तक पहुंच" से आपका क्या मतलब है? आप जेपीए प्रदाता एपीआई के माध्यम से अपनी 'orm.xml' फ़ाइल के तत्वों को पढ़ना चाहते हैं या शायद आप डेटाबेस स्कीमा, टेबल, संग्रहीत प्रक्रियाओं, ... को पढ़ना चाहते हैं? –

+0

मैं दृढ़ता-इकाई-डिफ़ॉल्ट में कॉन्फ़िगर की गई डिफ़ॉल्ट स्कीमा तक पहुंच बनाना चाहता हूं। JpaConfig.getSchema() की तरह कुछ। मैं जेपीए एपीआई या एक्लिप्ससेंक का उपयोग करना चाहता हूं। लेकिन एक्सएमएथ के माध्यम से उदाहरण के लिए सीधे एक्सएमएल तक नहीं पहुंचें, यदि संभव हो तो। – chris1069603

उत्तर

5

धन्यवाद मैं एक इकाई की स्कीमा का उपयोग करने के लिए एक समाधान पाया थोड़ी देर के लिए डिबगिंग के बाद।

EntityType<MyEntity> entity = emf.getMetamodel().entity(MyEntity.class); 

EntityTypeImpl entityTypeImpl = (EntityTypeImpl) entity;   
ClassDescriptor descriptor = entityTypeImpl.getDescriptor(); 

String schema = descriptor.getDefaultTable().getTableQualifier(); 

जानकारी तक पहुंचने का एक आसान और बेहतर तरीका ढूंढ रहे हैं! आपको बहुत बहुत धन्यवाद।

MyEntity.class.getAnnotation(javax.persistence.Entity.class).name();

+0

आप भी em.unwrap (सत्र.क्लास) का उपयोग कर सकते हैं .getDescriptor (MyEntity.class) .getDefaultTable()। GetTableQualifier(); – James

+2

या सत्र पर डिफ़ॉल्ट क्वालीफायर प्राप्त करने के लिए, em.unwrap (सत्र.क्लास) .getLogin()। GetTabl eQualifier(); – James

0

मैं जानता हूँ कि यह एक पुराने सवाल है, लेकिन यहाँ तालिका नाम के लिए सरल तरीका है। यह मैं क्या काम करने के लिए मिल गया है:

String schema = em.unwrap(JpaEntityManager.class).getServerSession().getDescriptor(MyClass.class).getTables().get(0).getTableQualifier(); 

https://wiki.eclipse.org/EclipseLink/FAQ/JPA

0

पिछले जवाब मेरे लिए काम नहीं किया:

संबंधित मुद्दे