इसलिए मेरा डेटाबेस मॉडल इस प्रकार है: मेरे पास Store
एस है और प्रत्येक Store
का स्थानीय नाम है।स्प्रिंग डेटा जेपीए के साथ मानचित्र मूल्यों के लिए कैसे पूछें?
@Embeddable
public class LocalizedValue {
@Column(name = "value")
private String value;
}
और यह सब:
public class Store {
private Map<Locale,LocalizedValue> name;
}
के रूप में आप यह <Locale, LocalizedValue>
का एक मानचित्र जहां LocalizedValue
इस तरह एक वर्ग है देख सकते हैं: तो मैं एक Map
इस तरह के रूप में स्थानीय नाम का प्रतिनिधित्व करने के लिए चुना है बहुत अच्छा काम करता है। हालांकि मुझे एक समस्या है जहां मैं अपने स्प्रिंग डेटा जेपीए रिपोजिटरी से पूछताछ करना चाहता हूं और दिए गए अंग्रेजी नाम के साथ सभी स्टोर ढूंढना चाहता हूं। तो मेरी भंडार विधि इस प्रकार है:
Store findByName(Map.Entry<Locale, LocalizedValue> name);
लेकिन यह इस अपवाद फेंकता है: तो फिर
2014-10-07 23:49:55,862 [qtp354231028-165] ERROR: Parameter value [en=Some Value] did not match expected type [com.test.LocalizedValue(n/a)]; nested exception is java.lang.IllegalArgumentException: Parameter value [en=Some Value] did not match expected type [com.test.LocalizedValue (n/a)]
org.springframework.dao.InvalidDataAccessApiUsageException: Parameter value [en=Some Value] did not match expected type [com.test.LocalizedValue (n/a)];
nested exception is java.lang.IllegalArgumentException: Parameter value [en=Some Value] did not match expected type [com.test.LocalizedValue (n/a)]
at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:384)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:216)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:417)
at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:59)
at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213)
मैं बदल मेरी भंडार विधि इस तरह होने के लिए:
Store findByName(LocalizedValue name);
लेकिन फिर मैं यह अपवाद मिला:
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'name1_.pk' in 'where clause'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
मैंने क्वेरी विधि में कंटेनिंग का उपयोग करने का भी प्रयास किया - अभी भी कोई भाग्य नहीं है।
तो मेरा सवाल है: क्या स्टोर नाम के लिए अंग्रेजी नाम 'कुछ मूल्य' के साथ पूछताछ करने का कोई तरीका है?
आपके उत्तर के लिए धन्यवाद। क्या यह स्प्रिंग जेपीए में प्रलेखित है? वसंत जेपीए द्वारा नक्शा मूल्यों का विस्तार कैसे किया जाता है, इस बारे में मुझे और जानकारी कहां मिल सकती है। – Sharadr
संग्रह पैरामीटर के साथ भी किया जा सकता है? – mihn