spring-ブート(Beanの作成中にエラーが発生)-org.springframework.beans.factory.UnsatisfiedDependencyException:名前を付けたBeanの作成中にエラーが発生しました

2019-10-28 java hibernate spring-boot jpa

jpa / hibernateを使用して基本的なWebサービスを作成しようとしています。しかし、豆は初期化されていません。誰かがこれで私を助けることができますか?

以下は私のCustomerController.javaです:

@RestController
public class CustomerController {

    @Autowired
    CustomerService service;

    @SuppressWarnings("deprecation")
    @PostMapping(value = "/getCust", consumes=MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public List<CustomerModel> retriveCustomers(@RequestBody CustomerModel cust){
        System.out.println(cust); //just to see the object in console
        List<CustomerModel> resp = service.getCustomers();
        return resp;
    }
}

以下は私のCustomerService.javaです:

@Service
public class CustomerService {

    @Autowired
    CustomerRepository repo;

    public List<CustomerModel> getCustomers() {
        List<CustomerModel> resp=repo.getAllCustomers();
        return resp;
    }


}

以下は私のCustomerRepository.javaです:

@Repository
public interface CustomerRepository extends CrudRepository<CustomerModel, Integer>{

    List<CustomerModel> getAllCustomers();
}

以下は私のCustomerModel.javaです:

@Entity
@Table(name="aliens")
public class CustomerModel {

    @Id
    @Column(name="customer_id")
    private String customerId;

    @Column(name="customer_name")
    private String customerName;

    @Column(name="customer_email")
    private String customerEmail;

    @Column(name="customer_phoneNum")
    private String customerPhoneNum;

    @Column(name="customer_password")
    private String customerPassword;


}

org.springframework.beans.factory.UnsatisfiedDependencyException: 「customerController」という名前のBeanの作成エラー:不満 依存関係はフィールド「サービス」で表現されます。ネストされた例外は org.springframework.beans.factory.UnsatisfiedDependencyException: 「customerService」という名前のBeanの作成エラー:不満 依存関係はフィールド「レポ」で表現されます。ネストされた例外は org.springframework.beans.factory.BeanCreationException:エラー 「customerRepository」という名前のBeanを作成:initの呼び出し メソッドが失敗しました。ネストされた例外はjava.lang.IllegalArgumentExceptionです。 メソッドpublic abstract java.util.Listのクエリを作成できませんでした com.ekart.fabfeet.service.CustomerRepository.getAllCustomers()!番号 タイプCustomerModelのプロパティgetAllCustomersが見つかりました!

org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:639) 〜[spring-beans-5.2.0.RELEASE.jar:5.2.0.RELEASE] org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:116)で 〜[spring-beans-5.2.0.RELEASE.jar:5.2.0.RELEASE] org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:397)で 〜[spring-beans-5.2.0.RELEASE.jar:5.2.0.RELEASE] org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1429)で 〜[spring-beans-5.2.0.RELEASE.jar:5.2.0.RELEASE] org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:594)で 〜[spring-beans-5.2.0.RELEASE.jar:5.2.0.RELEASE] org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517)で 〜[spring-beans-5.2.0.RELEASE.jar:5.2.0.RELEASE] org.springframework.beans.factory.support.AbstractBeanFactory.lambda $ doGetBean $ 0(AbstractBeanFactory.java:323)で 〜[spring-beans-5.2.0.RELEASE.jar:5.2.0.RELEASE] org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)で 〜[spring-beans-5.2.0.RELEASE.jar:5.2.0.RELEASE] org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321)で 〜[spring-beans-5.2.0.RELEASE.jar:5.2.0.RELEASE] org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)で 〜[spring-beans-5.2.0.RELEASE.jar:5.2.0.RELEASE] org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:879)で 〜[spring-beans-5.2.0.RELEASE.jar:5.2.0.RELEASE] org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:878)で 〜[spring-context-5.2.0.RELEASE.jar:5.2.0.RELEASE] org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550)で 〜[spring-context-5.2.0.RELEASE.jar:5.2.0.RELEASE] org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)で 〜[spring-boot-2.2.0.RELEASE.jar:2.2.0.RELEASE] org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747)で [spring-boot-2.2.0.RELEASE.jar:2.2.0.RELEASE] org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)で [spring-boot-2.2.0.RELEASE.jar:2.2.0.RELEASE] org.springframework.boot.SpringApplication.run(SpringApplication.java:315)で [spring-boot-2.2.0.RELEASE.jar:2.2.0.RELEASE] org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)で [spring-boot-2.2.0.RELEASE.jar:2.2.0.RELEASE] org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)で [spring-boot-2.2.0.RELEASE.jar:2.2.0.RELEASE]

Answers

リポジトリでCrudRepository<CustomerModel, Integer>拡張していますが、エンティティのID列は整数ではなく文字列です。

これが、リポジトリを一致させることができない理由です。それを文字列に修正すると、正しく機能するはずです

CrudRepositoryでは、findAll()メソッドを使用できます。

PagingAndSortingRepositoryから拡張することをお勧めするオブジェクトをリストする場合、ページングとソートのために実装が行われるため、非常に便利です。

エラーに関しては、 ここで正しい構文を見つけることができます(getAllが存在しないため、findAllを使用する必要があります)。

明らかに彼はQueryMethodsを実装しようとしています。その場合、メソッドのシグネチャが正しくありません。QueryMethodsは、エンティティのプロパティの名前とメソッド名でサポートされるキーワードからクエリが構築されるモデルです。

Related