के साथ कस्टम रिपॉजिटरी बनाने का प्रयास करते समय टाइप त्रुटि के लिए कोई प्रॉपर्टी नहीं मिली है मेरे पास एक मीडिया इकाई है जिसमें उपयोगकर्ता द्वारा अपलोड की गई फ़ाइलों के लिए कुछ बुनियादी फ़ील्ड हैं। अपलोड की गई फ़ाइलों के बाइट्स को सहेजने के लिए, मैं एक कस्टम रिपोजिटरी बनाना चाहता हूं जो उस कार्यक्षमता को रखे।स्प्रिंग डेटा जेपीए
public interface MediaBytesRepository
{
public byte[] getBytes(Media media) throws IOException;
public void saveBytes(Media media, byte[] bytes) throws IOException;
public void appendBytes(Media media, byte[] bytes) throws IOException;
public void deleteBytes(Media media) throws IOException;
public boolean bytesExist(Media media) throws IOException;
}
तब मैं इस इंटरफेस MediaBytesRepositoryImpl
कहा जाता है के लिए एक कार्यान्वयन प्रदान की है, मैं उसके बाद निम्न इंटरफ़ेस बनाया: Spring documentation में दिए गए चरणों के बाद, मैं एक अंतरफलक है कि इस तरह दिखता है बना लिया है
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mediaRepository': FactoryBean threw exception on object creation; nested exception is java.lang.IllegalArgumentException: Could not create query metamodel for method public abstract void com.foo.bar.core.media.MediaBytesRepository.saveBytes(com.foo.bar.core.media.Media,byte[]) throws java.io.IOException!
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:149)
.....
Caused by: java.lang.IllegalArgumentException: Could not create query metamodel for method public abstract void com.foo.bar.core.media.MediaBytesRepository.saveBytes(com.foo.bar.core.media.Media,byte[]) throws java.io.IOException!
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:92)
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:162)
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:68)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.<init>(RepositoryFactorySupport.java:280)
at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:148)
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport.java:125)
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport.java:41)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:142)
... 20 more
Caused by: java.lang.IllegalArgumentException: No property save found for type class com.foo.bar.core.media.Media
at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:73)
at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:92)
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:319)
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:333)
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:301)
at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:265)
at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:239)
at org.springframework.data.repository.query.parser.Part.<init>(Part.java:70)
at org.springframework.data.repository.query.parser.PartTree$OrPart.<init>(PartTree.java:180)
at org.springframework.data.repository.query.parser.PartTree$Predicate.buildTree(PartTree.java:260)
at org.springframework.data.repository.query.parser.PartTree$Predicate.<init>(PartTree.java:240)
at org.springframework.data.repository.query.parser.PartTree.<init>(PartTree.java:68)
at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.<init>(PartTreeJpaQuery.java:57)
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:90)
... 27 more
:
public interface MediaRepository extends JpaRepository<Media, Long>, MediaBytesRepository
{
}
अब, जब मैं सर्वर शुरू, मैं निम्नलिखित स्टैक ट्रेस मिल
मुझे यह similar post मिला, लेकिन वहां सुझाव (सभी पैकेज में, सम्मेलन नामकरण) वे चीजें हैं जो मैं पहले से कर रहा हूं। मेरे सभी मीडिया वर्ग और इंटरफेस एक ही पैकेज में हैं, और मैं "आईएमएल" प्रत्यय का उपयोग कर रहा हूं।
क्या कोई इस बारे में कुछ प्रकाश डाल सकता है कि मुझे यह त्रुटि क्यों मिल रही है और मैं इसे कैसे ठीक कर सकता हूं? धन्यवाद।
ऐसा लगता है कि मुझे गलत समझा जाता है कि चीजों को कैसे नामित किया जाना चाहिए। आपके उत्तर के बाद मैंने फिर से प्रलेखन को देखा और महसूस किया कि मेरे कार्यान्वयन वर्ग का नाम स्प्रिंग डेटा इंटरफ़ेस + "इम्प्ल" का नाम होना चाहिए और मेरे इंटरफ़ेस + "इम्प्ल" का नाम नहीं होना चाहिए। इसलिए, मैं अपने इंटरफेस 'MediaBytesRepository' का नाम रखने में सक्षम था और मुझे बस' MediaBytesRepositoryImpl' के बजाय कार्यान्वयन 'MediaRepositoryImpl' नाम देना पड़ा। सहायता के लिए धन्यवाद। – dnc253
वही गलती की गई ... सारांशित करने के लिए यह होना चाहिए: 1) आपका इंटरफेसनाम 2) आपका इंटरफेसनाम क्लाइंट 3) YourInterfaceNameImpl –
आपने मेरा दिन बचाया। आकर्षण –