2017-09-23 12 views
0

簡単なプロジェクトを作成するためにSpringbootを学びました。最初はhashsetsで偽のデータを使ってDAOを嘲笑しようとしましたが、すべて実際のDAOに移行しました。Spring:Unsatisfied dependency

現在、私はテーブルから特定のデータを取得しようとしていますが、動作していません。tried all possible SO threadsscanBasePackagesに設定されています。何も助けません。

また、コードフローの修正を提案したい場合は、エラーを除いて、教えてください....どのような種類の学習も歓迎です! :)

Controllerクラス

@RestController 
@RequestMapping("/movies") 

public class MovieController { 

    @Autowired 
    private MovieServices movieServices; 

    @RequestMapping(method = RequestMethod.GET) 
    public Collection<Movie> getAllMovies(){ 
     return movieServices.getAllMovies(); 
    } 
} 

サービスクラス

@Service // annotation needed to be recongnised as a bean - https://stackoverflow.com/questions/41663652/consider-defining-a-bean-of-type-service-in-your-configuration-spring-boot 
public class MovieServices { 

    @Autowired // help avoid 'new' keyword on every call 
    private MovieDao movies; 

    public MovieServices(){} 

    public Collection<Movie> getAllMovies(){ 
     return movies.findByInCinemas(true); 

    } 

} 

エンティティークラス

@Entity // This tells Hibernate to make a table out of this class 
public class Movie { 
    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    @Column(name="movieId") 
    private int movieId; 
    private String title; 
    private String language; 
    private String genre; 
    private boolean inCinemas; 

    public Movie(int id, String title, String language, String genre, boolean inCinemas) { 
     this.movieId = id; 
     this.title = title; 
     this.language = language; 
     this.genre = genre; 
     this.inCinemas = inCinemas; 
    } 

    public boolean isInCinemas() { 
     return inCinemas; 
    } 

    public void setInCinemas(boolean inCinemas) { 
     this.inCinemas = inCinemas; 
    } 


    public int getMovieId() { 
     return movieId; 
    } 

    public void setMovieId(int movieId) { 
     this.movieId = movieId; 
    } 

    public String getTitle() { 
     return title; 
    } 

    public void setTitle(String title) { 
     this.title = title; 
    } 

    public String getLanguage() { 
     return language; 
    } 

    public void setLanguage(String language) { 
     this.language = language; 
    } 

    public String getGenre() { 
     return genre; 
    } 

    public void setGenre(String genre) { 
     this.genre = genre; 
    } 
} 

DAOクラス

@Repository 
public interface MovieDao extends CrudRepository<Movie, Long>{ 
// private static Map<Integer, Movie> movies; 

// @Autowired 
// GenericDao genericDao; 


    // custom query example and return a stream 
    @Query("select * from movie where in_cinemas = :in_cinemas") 
    List<Movie> findByInCinemas(@Param("in_cinemas") boolean inCinemas); 


} 

スタックトレースは

Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled. 
2017-09-24 02:16:15.587 ERROR 71250 --- [   main] o.s.boot.SpringApplication    : Application startup failed 

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'movieController': Unsatisfied dependency expressed through field 'movieServices'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'movieServices': Unsatisfied dependency expressed through field 'movies'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'movieDao': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Validation failed for query for method public abstract java.util.List com.interview.intuit.Dao.MovieDao.findByInCinemas(boolean)! 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:588) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:366) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1264) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867) ~[spring-context-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543) ~[spring-context-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.5.7.RELEASE.jar:1.5.7.RELEASE] 
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693) [spring-boot-1.5.7.RELEASE.jar:1.5.7.RELEASE] 
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360) [spring-boot-1.5.7.RELEASE.jar:1.5.7.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:303) [spring-boot-1.5.7.RELEASE.jar:1.5.7.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118) [spring-boot-1.5.7.RELEASE.jar:1.5.7.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107) [spring-boot-1.5.7.RELEASE.jar:1.5.7.RELEASE] 
    at com.interview.intuit.Main.main(Main.java:16) [classes/:na] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_101] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_101] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_101] 
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_101] 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) [idea_rt.jar:na] 
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'movieServices': Unsatisfied dependency expressed through field 'movies'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'movieDao': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Validation failed for query for method public abstract java.util.List com.interview.intuit.Dao.MovieDao.findByInCinemas(boolean)! 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:588) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:366) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1264) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:585) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    ... 24 common frames omitted 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'movieDao': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Validation failed for query for method public abstract java.util.List com.interview.intuit.Dao.MovieDao.findByInCinemas(boolean)! 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:585) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    ... 37 common frames omitted 
Caused by: java.lang.IllegalArgumentException: Validation failed for query for method public abstract java.util.List com.interview.intuit.Dao.MovieDao.findByInCinemas(boolean)! 
    at org.springframework.data.jpa.repository.query.SimpleJpaQuery.validateQuery(SimpleJpaQuery.java:92) ~[spring-data-jpa-1.11.7.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.query.SimpleJpaQuery.<init>(SimpleJpaQuery.java:62) ~[spring-data-jpa-1.11.7.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.query.JpaQueryFactory.fromMethodWithQueryString(JpaQueryFactory.java:72) ~[spring-data-jpa-1.11.7.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.query.JpaQueryFactory.fromQueryAnnotation(JpaQueryFactory.java:53) ~[spring-data-jpa-1.11.7.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$DeclaredQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:144) ~[spring-data-jpa-1.11.7.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:212) ~[spring-data-jpa-1.11.7.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:77) ~[spring-data-jpa-1.11.7.RELEASE.jar:na] 
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.<init>(RepositoryFactorySupport.java:436) ~[spring-data-commons-1.13.7.RELEASE.jar:na] 
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:221) ~[spring-data-commons-1.13.7.RELEASE.jar:na] 
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:277) ~[spring-data-commons-1.13.7.RELEASE.jar:na] 
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:263) ~[spring-data-commons-1.13.7.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:101) ~[spring-data-jpa-1.11.7.RELEASE.jar:na] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624) ~[spring-beans-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    ... 47 common frames omitted 
Caused by: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: * near line 1, column 8 [select * from movie where in_cinemas = :in_cinemas] 
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1679) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final] 
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1602) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final] 
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1608) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final] 
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:294) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_101] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_101] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_101] 
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_101] 
    at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:347) ~[spring-orm-4.3.11.RELEASE.jar:4.3.11.RELEASE] 
    at com.sun.proxy.$Proxy80.createQuery(Unknown Source) ~[na:na] 
    at org.springframework.data.jpa.repository.query.SimpleJpaQuery.validateQuery(SimpleJpaQuery.java:86) ~[spring-data-jpa-1.11.7.RELEASE.jar:na] 
    ... 60 common frames omitted 
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: * near line 1, column 8 [select * from movie where in_cinemas = :in_cinemas] 
    at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:74) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final] 
    at org.hibernate.hql.internal.ast.ErrorCounter.throwQueryException(ErrorCounter.java:91) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final] 
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:288) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final] 
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:187) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final] 
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:142) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final] 
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:115) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final] 
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:76) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final] 
    at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:150) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final] 
    at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:302) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final] 
    at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:240) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final] 
    at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1894) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final] 
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:291) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final] 
    ... 67 common frames omitted 


Process finished with exit code 1 
+0

エラーメッセージを読みましたか? JPQLではなくSQLである明示的なJPA問合せを提供しました。 (さらに、Spring Dataはあなたのためにそのクエリを自動生成します)。 – chrylis

+0

ちょっと、こんにちは....私はメッセージを読んだ。残念なことに、「コントローラ」を指し示すエラーは実際にはDAO '....私はSQLを削除して、単に関数定義を残すべきですか? – NoobEditor

+0

私はクエリを削除し、関数の定義を 'List findByInCinemas(boolean inCinemas);に変更しました;' ...それはapi上で出力はありません。 – NoobEditor

答えて

1

あなたのクエリは間違ったJPQLです。

@Query("select * from movie where in_cinemas = :in_cinemas") 

はおそらくJPQLは、自分のクラスとクラスは、初めに大きな文字(Movie)で常にあるべき望んでいることに注意することが重要

@Query("select t from Movie t where t.inCinemas = ?1") 
List<Movie> findByInCinemas(boolean inCinemas); 

ようなものを使用することができます。ムービーのクラスが

@Entity 
@Data // lombok.Data 
public class Movie { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private long id; 

    @Column(name="in_cinemas") 
    private boolean inCinemas; 
} 

のように見える場合、あなたは実際にはクラスのフィールド名inCinemasではなく、テーブル名を与える必要が


しかし、このような単純な例の春のためのあなたができるよう、そのメソッド名の規則を持っていin_cinemas実際に使用する

@Repository 
public interface MovieDao extends CrudRepository<Movie, Long> { 
    List<Movie> findAllByInCinemas(boolean inCinemas); 
} 
+0

うん。それは仕事です! 1つの質問は、ループのうち、私はムービーを参照するボックスオフィスのクラスがあります - ボックスオフィスは多くの映画を持つことができますが、映画は独立しています(つまり、ボックスオフィスへの逆マッピングを意味しません)。 @OneToMany @JoinColumn(name = "movieId")privateリスト movies = new ArrayList <>(); 'ムービーをバインドして、ムービーを作成します。 – NoobEditor

+0

@NoobEditorもしあなたの質問が正しいとすれば、あなたは 'movie'、' box'、 'box_movie'のような3つのテーブルを持つDB構造を持ち、MovieクラスがBoxについて何か知りたくないのですか? 'Box'でも' @ OneToMany'を使うことができますが、 'Movie'クラスの反対側の' @ ManyToOne'は無視して、そこにフィールドを与えません。正直言って、 '@ ... Many'アノテーションは、あなたが本当に必要としている場合にのみ使用する方が望ましいと思います。 – varren

+0

私に10分を与えることが可能ですか? => https://chat.stackoverflow.com/rooms/155170/spring-issues – NoobEditor

-1

私はMovieServicesのためのインターフェイスを作成示唆し、JPQLの構文を満たさなければならないコントローラではない具体的なクラスに直接

1

あなたのクエリをtypeof演算インタフェースを注入します。以下のコードを確認してください:

@Query("select m from Movie m where m.inCinemas = :in_cinemas") 
List<Movie> findByInCinemas(@Param("in_cinemas") boolean inCinemas); 
+0

こんにちは....それはまだ同じエラーを返します 'org.springframework.beans.factory.UnsatisfiedDependencyException: movieController ':フィールド' movieServices 'で表現されている満足度の低い依存関係; ... ...私がクエリ部分をコメントしたとき、そのすべてが正しくコンパイルされています。上記のコメントを確認してください! :) – NoobEditor

+0

ムービークラスのコードを追加して見せることはできますか? –

+0

申し訳ありません...私の悪い... 1分!! – NoobEditor

1

既に問題を解決するための回答がありますが、

この非常に単純なシナリオでは、実際にはカスタムクエリを作成するために@Queryを必要としません。春のデータは彼の魔法を行うにしてみましょう、あなたが必要なのは、この

@Repository 
public interface MovieDao extends CrudRepository<Movie, Long>{ 


    List<Movie> findByInCinemas(boolean inCinemas); 


} 

でも@Repositoryは最新バージョンでは必要ありませんです。

第2に、CrudRepositoryよりもJpaRepository<Movie,Long>を使用してください。これは、より多くのjpa関連の再生方法を提供するためです。キーワードの

ドキュメント:

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repository-query-keywords