मैं उसी समस्या में भाग गया जहां एमएस एसक्यूएल सर्वर सूची और स्कीमा परिभाषित करना चाहता है, लेकिन एचएसक्यूएलडीबी नहीं करता है। मेरा समाधान कस्टम orm.xml फ़ाइल (persistence.xml के माध्यम से) को विशेष रूप से एमएस एसक्यूएल सर्वर के लिए लोड करना था जो कैटलॉग और स्कीमा सेट करता है। अपने META-INF/persistence.xml फ़ाइल
में
@Entity
@Table(name="CATEGORY")
public static class Category { ... }
2.Specify दो हठ इकाई नोड्स:
1.Only अपनी इकाई के लिए @Table नाम (किसी भी सूची या स्कीमा जानकारी को छोड़ देते हैं) निर्दिष्ट
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<!--
| For production and integration testing we use MS SQL Server, which needs
| the catalog and schema set (see orm-mssql.xml).
|-->
<persistence-unit name="com.mycompany.prod">
<mapping-file>META-INF/orm-mssql.xml</mapping-file>
</persistence-unit>
<!--
| For unit testing we use HSQLDB, which does not need the catalog or schema.
|-->
<persistence-unit name="com.mycompany.test" />
</persistence>
3.Specify डिफ़ॉल्ट सूची और ORM-mssql.xml फ़ाइल में स्कीमा:
<entity-mappings version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_2_0.xsd">
<persistence-unit-metadata>
<!--
| Set the catalog and schema for MS SQL Server
|-->
<persistence-unit-defaults>
<schema>MYSCHEMA</schema>
<catalog>MYCATALOG</catalog>
</persistence-unit-defaults>
</persistence-unit-metadata>
</entity-mappings>
4.I'm SPRI का उपयोग कर एनजी जेपीए कॉन्फ़िगर करने के लिए, तो मैं persistenceUnitName के मूल्य के लिए एक संपत्ति-प्लेसहोल्डर का उपयोग करें:
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="jpaVendorAdapter" ref="jpaVendorAdapter" />
<property name="persistenceUnitName" value="${entityManagerFactory.persistenceUnitName}" />
</bean>
इकाई परीक्षण के लिए, 'com.mycompany.test' का उपयोग करें और के लिए एकीकरण-परीक्षण/उत्पादन की तैनाती, उपयोग 'कॉम .mycompany.prod '।
स्रोत
2012-12-28 19:21:17
वहां पहले से ही इस बात के लिए खुला कीड़े हैं: http: // ओपनसोर्स। atlassian.com/projects/hibernate/browse/HHH-1853 लेकिन जाहिर है, डेवलपर्स पैच पसंद नहीं करते हैं (यह * तीन साल * के लिए खुला है, अब)। यह मुझे बताता है: कभी भी ठीक नहीं होगा। वे सिर्फ परवाह नहीं करते हैं। तो मुझे एक कामकाज की जरूरत है। –
यह शर्म की बात है, लेकिन ऐसा होता है: | । आप किस तरह का समाधान ढूंढ रहे हैं? आपके भीतर उप-इष्टतम क्या है - तथ्य यह है कि आपको स्कीमा या तथ्य यह है कि इसे आपके परीक्षण कोड में रखा गया है (मुझे कोड से लगता है) बनाना है? –
मुझे नाखुश है कि मुझे इसे प्राप्त करने में करना है कॉन्फिग लोकेशन() - यह विधि पूरी तरह से कुछ और करती है और यदि कोई इस कोड की तलाश में था, तो यह देखने के लिए आखिरी जगह होगी। –