जैसा कि टिप्पणी की गई है, यह मुझे लगता है कि हाइबरनेट एक स्थानिक बोली के लिए डिफ़ॉल्ट होगा जो कि उपलब्ध से पहली बार मिलेगा, और उस स्थिति में यह ओरेकल था, जो भी दृढ़ता में निर्दिष्ट किया गया था। एक्सएमएल।
पहला समाधान जो मैंने पाया वह इकाई में यह व्याख्या करना था कि GeometryUserType के लिए मैं Postgis बोली का उपयोग इस प्रकार करूंगा:
@TypeDefs({@TypeDef(name="org.hibernatespatial.GeometryUserType",
parameters={@org.hibernate.annotations.Parameter(name="dialect",value="org.hibernatespatial.postgis.PostgisDialect")},
typeClass=org.hibernatespatial.GeometryUserType.class)})
यह हाइबरनेट को उस इकाई के लिए पोस्टगिस का उपयोग करने के लिए मजबूर करेगा।
दूसरा समाधान, जिसने मेरे लिए बेहतर काम किया (मुझे इसे कॉन्फ़िगर करने और दृढ़ता इकाई और पर्यावरण के आधार पर एक इकाई के लिए विभिन्न बोलियों का उपयोग करने में सक्षम होना चाहिए) दृढ़ता इकाई में मैपिंग फ़ाइल का उपयोग करना है।
<persistence-unit name="persistence_unit_name" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>jta_data_source_name</jta-data-source>
<mapping-file>${hibernate.mappingfile}</mapping-file>
<class>(...)</class>
मेरी पोम फ़ाइल में, मैं मैवेन प्रोफाइल और वेरिएबल्स का उपयोग करके उस मैपिंग फ़ाइल को उस मैपिंग फ़ाइल को बना दूंगा जिसकी मुझे आवश्यकता है।
<hibernate.mappingfile>oracle.hbm.xml</hibernate.mappingfile>
या:
<hibernate.mappingfile>postgis.hbm.xml</hibernate.mappingfile>
इसलिए मेरे पास उदाहरण के लिए एक postgis.hbm.xml
. होगा फ़ाइल:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<typedef name="org.hibernatespatial.GeometryUserType" class="org.hibernatespatial.GeometryUserType" >
<param name="dialect">org.hibernatespatial.postgis.PostgisDialect</param>
</typedef>
</hibernate-mapping>
और एक oracle.hbm.xml
:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<typedef name="org.hibernatespatial.GeometryUserType" class="org.hibernatespatial.GeometryUserType" >
<param name="dialect">org.hibernatespatial.oracle.OracleSpatial10gDialect</param>
</typedef>
</hibernate-mapping>
मुझे आश्चर्य है कि ऐसा करने का कोई बेहतर तरीका है, लेकिन इन दिनों के दौरान मुझे कोई भी नहीं मिला, या मुझे यहां उत्तर दिया गया। आशा है कि यह किसी की मदद करता है।