PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

स्प्रिंग जेपीए में पोस्टग्रेज सरणियों का मानचित्रण करते समय त्रुटि

जैसे @ जेफ-वांग ने बताया है, पोस्टग्रेस सरणी प्रकार जेपीए द्वारा समर्थित नहीं हैं। विशिष्ट मानचित्रण कार्यान्वयन मैन्युअल रूप से जोड़े जा सकते हैं, लेकिन @ vlad-mihalcea ने पहले ही नमूना कार्यान्वयन प्रदान कर दिया है। आप इसे मावेन सेंट्रल से प्राप्त करते हैं:

<निर्भरता> com.vladmihalcea hibernate-types-52 <संस्करण>${hibernate-types.version}  

अधिक विवरण यहां पाया जा सकता है:https://vladmihalcea.com/how-to-map-java-and-sql-arrays-with-jpa-and-hibernate/

निर्भरता को हल करने के बाद, विशिष्ट मानचित्रण के लिए एक कार्यान्वयन जोड़ा जाना चाहिए। आइए हम Postgres bigint[] take लें उदहारण के लिए। उदाहरण के लिए इसे मैप किया जा सकता है Long[] . सबसे पहले, हमें वांछित प्रकार के लिए डिस्क्रिप्टर जोड़ने की जरूरत है:

import com.vladmihalcea.hibernate.type.array.internal.AbstractArrayTypeDescriptor;सार्वजनिक वर्ग LongArrayTypeDescriptor AbstractArrayTypeDescriptor को बढ़ाता है { सार्वजनिक स्थैतिक अंतिम LongArrayTypeDescriptor INSTANCE =new LongArrayTypeDescriptor(); सार्वजनिक LongArrayTypeDescriptor () {सुपर (लॉन्ग []। क्लास); } संरक्षित स्ट्रिंग getSqlArrayType () {वापसी "बिगिंट"; }} 

उसके बाद वास्तविक मानचित्रण वर्ग:

आयात करें AbstractSingleColumnStandardBasicType DynamicParameterizedType लागू करता है { public static final LongArrayType INSTANCE =new LongArrayType (); सार्वजनिक LongArrayType () { सुपर (ArraySqlTypeDescriptor.INSTANCE, LongArrayTypeDescriptor.INSTANCE); } सार्वजनिक स्ट्रिंग getName () {वापसी "लंबी-सरणी"; } @Override संरक्षित बूलियन रजिस्टरUnderJavaType() {वापसी सच; } @ ओवरराइड सार्वजनिक शून्य सेट पैरामीटर वैल्यू (गुण पैरामीटर) {((लॉन्गअरे टाइप डिस्क्रिप्टर) getJavaTypeDescriptor ())। सेट पैरामीटर वैल्यू (पैरामीटर); }}

ऐसा किया जा रहा है, बस इतना करना बाकी है कि स्प्रिंग कॉन्फ़िगरेशन में हमारे मैपिंग को ध्यान में रखना है। मैं अपने डेटा मॉडल कॉन्फ़िगरेशन को एनोटेशन आधारित रूप में अलग से रख रहा हूं:

आयात करें TypeDefs({@TypeDef(name ="long-array", typeClass =LongArrayType.class), @TypeDef(name ="short-array", typeClass =ShortArrayType.class)})@MappedSuperclasspublic class DaoConfig {}

अब सब कुछ उपयोग के लिए तैयार है। डीएओ परिभाषा में नई जोड़ी गई मैपिंग के साथ एनोटेट किया गया उदाहरण कॉलम निम्न जैसा दिखता है:

@Type( type ="long-array")@Column(ColumnDefinition ="bigint[]")private Long[] लेखक; 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PgAdmin4 चलाने का प्रयास करने में त्रुटि

  2. PostgreSQL में अग्रणी शून्य जोड़ने के 2 तरीके

  3. SQLAlchemy में जटिल विदेशी कुंजी बाधा

  4. धाराप्रवाह NHibernate और PostgreSQL, SchemaMetadataUpdater.QuoteTableAndColumns - System.NotSupportedException:निर्दिष्ट विधि समर्थित नहीं है

  5. Postgresql मान सेट करने के लिए ट्रिगर डालें