Kullanıcı tarafından yüklenen bazı dosyalar için bazı temel alanlara sahip bir Medya var. Yüklenen dosyaların baytlarını kaydetmek için, bu işlevselliği tutan özel bir depo oluşturmak istiyorum. Bunun sayesinde MediaBytesRepositoryImpl
Spring Data ile özel depo oluşturmaya çalışırken tür hatası için bir özellik bulunamadı JPA
denilen bu arayüz için bir gerçekleme sağladı Sonra
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;
}
, ben sonra aşağıdaki arayüz oluşturdu:
Spring documentation adımların ardından, şöyle bir arayüz oluşturduk
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
: Ben sunucu başlatıldığında Şimdi
public interface MediaRepository extends JpaRepository<Media, Long>, MediaBytesRepository
{
}
, ben şu yığın izleme almak
Bu similar post numaralı belgeyi buldum, ancak önerileri (tümü aynı pakette, adlandırma kuralı) zaten yaptığım şeyler. Tüm medya sınıflarım ve arabirimlerim aynı pakette ve "Impl" soneki kullanıyorum.
Birisi neden bu hatayı aldığımı ve nasıl düzeltebileceğimi açıklayabilir mi? Teşekkürler.
Bazı şeylerin nasıl adlandırılacağını yanlış anladım gibi görünüyor. Cevabınızdan sonra yeniden belgelere baktım ve uygulamacı sınıfımın adının, Spring Data arayüzünün + "Impl" isminin olması gerektiğini ve "Impl" arayüzünün adını değil. Bu yüzden, 'MediaBytesRepository' ara yüzümün adını tutabildim ve MediaBytesRepositoryImpl 'yerine MediaRepositoryImpl' işlevini adlandırmak zorunda kaldım. Yardım için teşekkürler. – dnc253
Aynı hatayı yaptı ... Özetlemek gerekirse: 1) ArayanınızAdı 2) TanımlamanızAdıÖdeme 3) Sizin TanımlamanızNameImpl –
Günümü kurtardınız. Çekicilik gibi çalışıyor –