spring-boot-starter-jpaを使用したQuerydslPredicate

rdabrowski

com.querydslでのQクラスの自動生成に問題があります。com.query.dslとspring-boot-jpaの互換性に間違いがある可能性があることは知っていますが、多くのバージョンを試しましたが、肯定的な結果は得られませんでした。これが私のpom.xmlです

    <dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-rest</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>9.4.1212.jre7</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-dbcp2</artifactId>
        <version>2.1.1</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.4</version>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.12</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-aop</artifactId>
        <version>1.4.3.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>21.0</version>
    </dependency>
    <dependency>
        <groupId>commons-beanutils</groupId>
        <artifactId>commons-beanutils</artifactId>
        <version>1.9.3</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.6.1</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.6.1</version>
    </dependency>
    <dependency>
        <groupId>com.querydsl</groupId>
        <artifactId>querydsl-jpa</artifactId>
        <version>4.0.7</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>com.mysema.maven</groupId>
            <artifactId>apt-maven-plugin</artifactId>
            <version>1.1.3</version>
            <executions>
                <execution>
                    <id>process-common-model</id>
                    <goals>
                        <goal>process</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>target/generated-sources/apt</outputDirectory>
                        <processors>
                            <processor>com.query.apt.jpa.JPAAnnotationProcessor</processor>
                        </processors>
                    </configuration>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>com.querydsl</groupId>
                    <artifactId>querydsl-apt</artifactId>
                    <version>4.0.7</version>
                </dependency>
            </dependencies>
        </plugin>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

エラー

原因:org.springframework.beans.BeanInstantiationException:インスタンス化に失敗しました[org.springframework.data.jpa.repository.support.QueryDslJpaRepository]:コンストラクターが例外をスローしました。ネストされた例外はjava.lang.IllegalArgumentExceptionです:ドメインクラスcom.coig.prek.webservice.modules.quiz.entiry.Quizのクエリクラスcom.coig.prek.webservice.modules.quiz.entiry.QQuizが見つかりませんでした!org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:154)〜[spring-beans-4.3.6.RELEASE.jar:4.3.6.RELEASE]でorg.springframework.data.repository.core.supportで。 RepositoryFactorySupport.getTargetRepositoryViaReflection(RepositoryFactorySupport.java:365)〜[spring-data-commons-1.13.0.RELEASE.jar:na] at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:101 )〜[spring-data-jpa-1.11.0。101)〜[spring-data-jpa-1.11.0.RELEASE.jar:na] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687)〜[spring-beans-4.3.6 .RELEASE.jar:4.3.6.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624)〜[spring-beans-4.3.6.RELEASE.jar:4.3.6。 RELEASE] ... 47個の共通フレームが省略されました原因:java.lang.IllegalArgumentException:ドメインクラスcom.coig.prek.webserviceのクエリクラスcom.coig.prek.webservice.modules.quiz.entiry.QQuizが見つかりませんでした。 modules.quiz.entiry.Quiz!org.springframework.data.querydsl.SimpleEntityPathResolver.createPath(SimpleEntityPathResolver.java:63)〜[spring-data-commons-1.13.0.RELEASE.jar:na] atorg.springframework.data.jpa.repository.support。

リポジトリ:

@Repository
public interface QuizRepository extends PagingAndSortingRepository<Quiz, Long>, QueryDslPredicateExecutor<Quiz> {
}

およびエンティティ:

@javax.persistence.Entity
@Table(name = "QUIZ", uniqueConstraints = {
        @UniqueConstraint(columnNames = "NAME")
})
@ToString
public class Quiz extends Entity{

    @Column(name = "NAME")
    private @Setter @Getter String name;
    @Column(name = "TYPE")
    private @Setter @Getter Integer type;
    @Column(name = "TIME")
    private @Setter @Getter Long time;
    @JsonProperty(value = "branch")
    @Column(name = "BRANCH")
    private @Setter @Getter Integer branch;

    @OneToMany
    private @Setter @Getter Set<Question> questions;

    public Quiz() {}

}

私が何かを逃しているかどうか、または私が間違っていることを教えてもらえますか?助けてくれてありがとう。

jcgarcia

QueryDSLの使用方法の例を次に示します

次の依存関係をpom.xmlファイルに含めます。

    <dependency>
        <groupId>io.springlets</groupId>
        <artifactId>springlets-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>com.querydsl</groupId>
        <artifactId>querydsl-jpa</artifactId>
    </dependency>

また、Qクラスを生成できるようにするには、次のプラグインを含めます。

            <plugin>
                <groupId>com.mysema.maven</groupId>
                <artifactId>apt-maven-plugin</artifactId>
                <version>1.1.3</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>process</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>target/generated-sources/java</outputDirectory>
                            <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
                        </configuration>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>com.querydsl</groupId>
                        <artifactId>querydsl-apt</artifactId>
                        <version>${querydsl.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>com.querydsl</groupId>
                        <artifactId>querydsl-jpa</artifactId>
                        <version>${querydsl.version}</version>
                    </dependency>
                </dependencies>
            </plugin>

次に、と呼ばれる新しいリポジトリインターフェイスを作成し、QuizRepositoryCustom提供するメソッドを定義します。

public interface QuizRepositoryCustom {

  // SAMPLE METHOD TO SEARCH QUIZ BY NAME
  public Page<Quiz> findByNameLike(String name, Pageable pageable);

}

の実装を作成しますQuizRepositoryCustomこのクラスはQueryDslRepositorySupportを拡張する必要があります

public class QuizRepositoryImpl extends QueryDslRepositorySupport<Quiz> implements QuizRepositoryCustom {

    QuizRepositoryImpl() {
        super(Quiz.class);
    }

    public Page<Quiz> findByNameLike(String name, Pageable pageable) {

        QQuiz quiz = QQuiz.quiz;

        JPQLQuery<Quiz> query = from(quiz);

        if (StringUtils.isNotEmpty(name)) {
           BooleanBuilder searchCondition = new BooleanBuilder();                         

           searchCondition.and(quiz.name.eq(name));

           if (searchCondition.hasValue()) {
            query.where(searchCondition);
           }
        }

        long totalFound = query.fetchCount();
        List<Quiz> results = query.select(quiz).fetch();
        return new PageImpl<M>(results, pageable, totalFound);
    }

}

ここで、QuizRepositoryインターフェイスJpaRepository<Quiz, Long>QuizRepositoryCustomインターフェイスを拡張します。

public interface QuizRepository extends QuizRepositoryCustom, JpaRepository<Quiz, Long> {

}

その簡単な手順で、QueryDSLを使用できるようになります。

また、QueryDSLの使用方法に関するその他の例を含む次のプロジェクトを確認することもできます。

https://github.com/jcagarcia/proofs/tree/master/spring-security-and-formatters/src/main/java/org/springframework/roo/petclinic/repository

それが役に立てば幸い、

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

axon-spring-boot-starterを使用したNoHandlerForCommandException

分類Dev

spring-boot-starter のみを含む

分類Dev

cxf-spring-boot-starter-jaxwsを使用したxmlDatabinding構成

分類Dev

Gradle、Spring Boot、spring-boot-starter-data-jpaアップグレード

分類Dev

Tomcatとspring-boot-starter

分類Dev

Spring Boot-Spring Boot Starter Actuatorの問題

分類Dev

プロファイルを使用したspring-boot-starter-remote-shellの構成

分類Dev

spring-boot-starter-webとspring-boot-starter-webfluxは一緒に動作しませんか?

分類Dev

spring-boot-starter-parentの使用を避けるために、spring-boot-starterをspring-bootに簡単に置き換えることはできますか?

分類Dev

optaplanner-spring-boot-starterとkie-server-spring-boot-starter

分類Dev

春のinitializr:spring-boot-starter vs spring-boot-starter-web

分類Dev

spring-boot-starter-tomcatとspring-boot-starter-web

分類Dev

spring-boot-starter-webfluxはAcceptHeaderLocaleResolverを使用できません

分類Dev

Spring boot "spring-boot-starter-mail"経由でメールを送信する

分類Dev

org.springframework.boot:spring-boot-starter-velocityが見つかりませんでした

分類Dev

org.springframework.boot:spring-boot-starter-velocityが見つかりませんでした

分類Dev

org.springframework.boot:spring-boot-starter-velocityが見つかりませんでした

分類Dev

spring-boot-starter-web @ Autowiredが機能していません

分類Dev

mybatis-spring-boot-starter-testを実行する方法は?

分類Dev

spring-boot-starter-dataを使用してPostgresでcassandraを使用する方法

分類Dev

VSCodeを使用してメールを送信する(spring-boot-starter-email)

分類Dev

Oauth2およびSpring-boot-starter-parentバージョン2+を使用したSpringブートSSO

分類Dev

Spring Boot:Spring-boot-starter-data-jpa依存関係を追加するときのエラー

分類Dev

spring-boot-starter-data-jpaで作成されたH2データベース(spring-boot-starter-data-jdbcで作成されていない)

分類Dev

Spring BootはGradleを使用してspring-boot-starter-dao-jpaパッケージを見つけることができませんか?

分類Dev

spring-boot-starter-webを使用した「許容できる表現が見つかりませんでした」

分類Dev

Spring Boot Starterアプリgraphql-spring-boot-starterを使用して2つのgraphqlエンドポイントを公開する方法はありますか?

分類Dev

適切なSpring Boot Starterの特定

分類Dev

Spring boot starter data rest, @Notnull constraint not working

Related 関連記事

  1. 1

    axon-spring-boot-starterを使用したNoHandlerForCommandException

  2. 2

    spring-boot-starter のみを含む

  3. 3

    cxf-spring-boot-starter-jaxwsを使用したxmlDatabinding構成

  4. 4

    Gradle、Spring Boot、spring-boot-starter-data-jpaアップグレード

  5. 5

    Tomcatとspring-boot-starter

  6. 6

    Spring Boot-Spring Boot Starter Actuatorの問題

  7. 7

    プロファイルを使用したspring-boot-starter-remote-shellの構成

  8. 8

    spring-boot-starter-webとspring-boot-starter-webfluxは一緒に動作しませんか?

  9. 9

    spring-boot-starter-parentの使用を避けるために、spring-boot-starterをspring-bootに簡単に置き換えることはできますか?

  10. 10

    optaplanner-spring-boot-starterとkie-server-spring-boot-starter

  11. 11

    春のinitializr:spring-boot-starter vs spring-boot-starter-web

  12. 12

    spring-boot-starter-tomcatとspring-boot-starter-web

  13. 13

    spring-boot-starter-webfluxはAcceptHeaderLocaleResolverを使用できません

  14. 14

    Spring boot "spring-boot-starter-mail"経由でメールを送信する

  15. 15

    org.springframework.boot:spring-boot-starter-velocityが見つかりませんでした

  16. 16

    org.springframework.boot:spring-boot-starter-velocityが見つかりませんでした

  17. 17

    org.springframework.boot:spring-boot-starter-velocityが見つかりませんでした

  18. 18

    spring-boot-starter-web @ Autowiredが機能していません

  19. 19

    mybatis-spring-boot-starter-testを実行する方法は?

  20. 20

    spring-boot-starter-dataを使用してPostgresでcassandraを使用する方法

  21. 21

    VSCodeを使用してメールを送信する(spring-boot-starter-email)

  22. 22

    Oauth2およびSpring-boot-starter-parentバージョン2+を使用したSpringブートSSO

  23. 23

    Spring Boot:Spring-boot-starter-data-jpa依存関係を追加するときのエラー

  24. 24

    spring-boot-starter-data-jpaで作成されたH2データベース(spring-boot-starter-data-jdbcで作成されていない)

  25. 25

    Spring BootはGradleを使用してspring-boot-starter-dao-jpaパッケージを見つけることができませんか?

  26. 26

    spring-boot-starter-webを使用した「許容できる表現が見つかりませんでした」

  27. 27

    Spring Boot Starterアプリgraphql-spring-boot-starterを使用して2つのgraphqlエンドポイントを公開する方法はありますか?

  28. 28

    適切なSpring Boot Starterの特定

  29. 29

    Spring boot starter data rest, @Notnull constraint not working

ホットタグ

アーカイブ