Я хочу найти все StockAtLocations с помощью cntStock! = OldStock, я мог бы написать это с помощью аннотации @Query, но мне кажется, что это неправильно, но я не знаю, как написать это в своем интерфейсе.
@Entity
@Getter
@Setter
public class StockAtLocation implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(nullable = false, unique = true)
private Long id;
private String oldStockArea;
private String note;
private int oldStock;
private int cntStock;
@JoinColumn(nullable = false)
@ManyToOne(optional = false, cascade = CascadeType.PERSIST)
private StorageLocation storageLocation;
@ManyToOne
private Article article;
}
это то, что я пытался
interface StockAtLocationRepository extends CrudRepository<StockAtLocation, Long> {
public List<StockAtLocation> findByNoteNotNull();
// this does not work.
public List<StockAtLocation> findByNotOldstockEqualCntstock();
}
это вывод компилятора
org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка создания компонента с именем «deviceService»: неудовлетворенная зависимость, выраженная через поле «stockRepo»; Вложенное исключение - org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка при создании bean-компонента с именем stockAtLocationService. Неудовлетворенная зависимость выражается через поле stockRepo. вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем stockAtLocationRepository: сбой вызова метода init; вложенное исключение - java.lang.IllegalArgumentException: не удалось создать метод запроса. public abstract java.util.List com.mm.inventur.services.StockAtLocationRepository.findByNotOldstockEqualCntstock ()! Нет свойства notOldstockEqualCntstock найдено для типа StockAtLocation!
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject (AutowiredAnnotationBeanPostProcessor.java:588) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13] RELE
в org.springframework.beans.factory.annotation.InjectionMetadata.inject (InjectionMetadata.java:88) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues (AutowiredAnnotationBeanPostProcessor.java:366) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean (AbstractAutowireCapableBeanFactory.java:1264) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:553) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:483) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
в org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.java:306) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:230) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:302) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:197) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
в org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.java:761) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
в org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:867) ~ [spring-context-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
в org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:543) ~ [spring-context-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
в org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh (EmbeddedWebApplicationContext.java:122) ~ [spring-boot-1.5.9.RELEASE.jar: 1.5.9.RELEASE]
в org.springframework.boot.SpringApplication.refresh (SpringApplication.java:693) [spring-boot-1.5.9.RELEASE.jar: 1.5.9.RELEASE]
в org.springframework.boot.SpringApplication.refreshContext (SpringApplication.java:360) [spring-boot-1.5.9.RELEASE.jar: 1.5.9.RELEASE]в org.springframework.boot.SpringApplication.run (SpringApplication.java:303) [spring-boot-1.5.9.RELEASE.jar: 1.5.9.RELEASE]
в org.springframework.boot.SpringApplication.run (SpringApplication.java:1118) [spring-boot-1.5.9.RELEASE.jar: 1.5.9.RELEASE]
в org.springframework.boot.SpringApplication.run (SpringApplication.java:1107) [spring-boot-1.5.9.RELEASE.jar: 1.5.9.RELEASE]
в com.mm.inventur.InventurApplication.main (InventurApplication.java:12) [классы /: нет]
at sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) ~ [na: 1.8.0_161]
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) ~ [na: 1.8.0_161]
at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) ~ [na: 1.8.0_161]
at java.lang.reflect.Method.invoke (Method.java:498) ~ [na: 1.8.0_161]
в org.springframework.boot.devtools.restart.RestartLauncher.run (RestartLauncher.java:49) [spring-boot-devtools-1.5.9.RELEASE.jar: 1.5.9.RELEASE]
Вызвано: org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка при создании bean-компонента с именем stockAtLocationService: Неудовлетворенная зависимость, выраженная через поле stockRepo; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем stockAtLocationRepository: сбой вызова метода init; вложенное исключение - java.lang.IllegalArgumentException: не удалось создать метод запроса. public abstract java.util.List com.mm.inventur.services.StockAtLocationRepository.findByNotOldstockEqualCntstock ()! Нет свойства notOldstockEqualCntstock найдено для типа StockAtLocation!
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject (AutowiredAnnotationBeanPostProcessor.java:588) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13] RELE
в org.springframework.beans.factory.annotation.InjectionMetadata.inject (InjectionMetadata.java:88) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues (AutowiredAnnotationBeanPostProcessor.java:366) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean (AbstractAutowireCapableBeanFactory.java:1264) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:553) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:483) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
в org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.java:306) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:230) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:302) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
в org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:202) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate (DependencyDescriptor.java:208) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency (DefaultListableBeanFactory.java:1138) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency (DefaultListableBeanFactory.java:1066) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject (AutowiredAnnotationBeanPostProcessor.java:585) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13] RELE
... пропущено 24 общих кадра
Вызвано: org.springframework.beans.factory.BeanCreationException: Ошибка при создании компонента с именем stockAtLocationRepository: сбой вызова метода init; вложенное исключение - java.lang.IllegalArgumentException: не удалось создать метод запроса. public abstract java.util.List com.mm.inventur.services.StockAtLocationRepository.findByNotOldstockEqualCntstock ()! Нет свойства notOldstockEqualCntstock найдено для типа StockAtLocation!
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1628) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:555) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:483) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
в org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.java:306) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:230) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:302) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
в org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:202) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate (DependencyDescriptor.java:208) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency (DefaultListableBeanFactory.java:1138) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency (DefaultListableBeanFactory.java:1066) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject (AutowiredAnnotationBeanPostProcessor.java:585) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13] RELE
... 37 общих кадров пропущено
Причина: java.lang.IllegalArgumentException: не удалось создать метод запроса. Public abstract java.util.List com.mm.inventur.services.StockAtLocationRepository.findByNotOldstockEqualCntstock ()! Нет свойства notOldstockEqualCntstock найдено для типа StockAtLocation!
в org.springframework.data.jpa.repository.query.PartTreeJpaQuery. (PartTreeJpaQuery.java:76) ~ [spring-data-jpa-1.11.9.RELEASE.jar: na]
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy $ CreateQueryLookupStrategy.resolveQuery (JpaQueryLookupStrategy.java:101) ~ [spring-data-jpa-1.11.9.RELEASE.jar: na]
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy $ CreateIfNotFoundQueryLookupStrategy.resolveQuery (JpaQueryLookupStrategy.java:207) ~ [spring-data-jpa-1.11.9.ar:].
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy $ AbstractQueryLookupStrategy.resolveQuery (JpaQueryLookupStrategy.java:77) ~ [spring-data-jpa-1.11.9.RELEASE.jar: na]в org.springframework.data.repository.core.support.RepositoryFactorySupport $ QueryExecutorMethodInterceptor. (RepositoryFactorySupport.java:451) ~ [spring-data-commons-1.13.9.RELEASE.jar: na]
в org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository (RepositoryFactorySupport.java:224) ~ [spring-data-commons-1.13.9.RELEASE.jar: na]
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn (RepositoryFactoryBeanSupport.java:277) ~ [spring-data-commons-1.13.9.RELEASE.jar: na]
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet (RepositoryFactoryBeanSupport.java:263) ~ [spring-data-commons-1.13.9.RELEASE.jar: na]
at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet (JpaRepositoryFactoryBean.java:101) ~ [spring-data-jpa-1.11.9.RELEASE.jar: na]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods (AbstractAutowireCapableBeanFactory.java:1687) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1624) ~ [spring-beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE]
... пропущено 47 общих кадров
Вызывается: org.springframework.data.mapping.PropertyReferenceException: не найдено свойство notOldstockEqualCntstock для типа StockAtLocation!
в org.springframework.data.mapping.PropertyPath. (PropertyPath.java:77) ~ [spring-data-commons-1.13.9.RELEASE.jar: na]
в org.springframework.data.mapping.PropertyPath.create (PropertyPath.java:329) ~ [spring-data-commons-1.13.9.RELEASE.jar: na]
в org.springframework.data.mapping.PropertyPath.create (PropertyPath.java:309) ~ [spring-data-commons-1.13.9.RELEASE.jar: na]
в org.springframework.data.mapping.PropertyPath.from (PropertyPath.java:272) ~ [spring-data-commons-1.13.9.RELEASE.jar: na]
в org.springframework.data.mapping.PropertyPath.from (PropertyPath.java:243) ~ [spring-data-commons-1.13.9.RELEASE.jar: na]
в org.springframework.data.repository.query.parser.Part. (Part.java:76) ~ [spring-data-commons-1.13.9.RELEASE.jar: na]
в org.springframework.data.repository.query.parser.PartTree $ OrPart. (PartTree.java:247) ~ [spring-data-commons-1.13.9.RELEASE.jar: na]
в org.springframework.data.repository.query.parser.PartTree $ Predicate.buildTree (PartTree.java:398) ~ [spring-data-commons-1.13.9.RELEASE.jar: na]
в org.springframework.data.repository.query.parser.PartTree $ Predicate. (PartTree.java:378) ~ [spring-data-commons-1.13.9.RELEASE.jar: na]
в org.springframework.data.repository.query.parser.PartTree. (PartTree.java:89) ~ [spring-data-commons-1.13.9.RELEASE.jar: na]
в org.springframework.data.jpa.repository.query.PartTreeJpaQuery. (PartTreeJpaQuery.java:70) ~ [spring-data-jpa-1.11.9.RELEASE.jar: na]
... 57 общих кадров пропущено
Кажется, проблема возникает из-за того, что я не использую аргументы для функции.
Спасибо за вашу помощь.