Spring boot 2.1 + Ignite репозиторий 2.7.0 - обходной путь для проблем с общими данными Spring при использовании @Query или методов запросов - PullRequest
0 голосов
/ 31 января 2019

Привет, я использую Spring boot 2.1.2 и Ignite 2.7.0

У меня есть хранилище CRUD Ignite с методами запросов

@RepositoryConfig(cacheName = SmartConstants.IGNITE_ISSUE_DETAILS_CACHE)
public interface IgniteIssueDetailsRepository extends IgniteRepository<IgniteIssueDetails,Long>{

    List<IgniteIssueDetails> findAllByProjectName(String projectName);
    Long countByProjectNameAndResolution(String projectName,String resolution);
    Long countByProjectName(String projectName);
}

Ошибка:

Причина: java.lang.IllegalStateException: вы определили метод запроса в хранилище, но у вас нет определенной стратегии поиска запроса.Очевидно, что инфраструктура не поддерживает методы запросов!

Я понимаю, что это связано с изменением общих данных пружин с 2.0.X на 2.1.X, но не смог найти решение для ignite

У Ignite 2.7 все еще есть старое определение метода

 @Override protected QueryLookupStrategy getQueryLookupStrategy(final QueryLookupStrategy.Key key,
        EvaluationContextProvider evaluationCtxProvider) {

Это не соответствует новому определению общих данных пружинных данных

@Override
    protected Optional<QueryLookupStrategy> getQueryLookupStrategy(@Nullable Key key,
            QueryMethodEvaluationContextProvider evaluationContextProvider) {

Я пытался включить несколько версий общих ресурсов, но продолжаю получать некоторые другие ошибки.

Если я использую предварительно загруженный метод, такой как findAll (), он работает нормально !!

У нас есть какая-нибудь версия Spring-data-commons, которая может помочь мне здесь: (

применение основной пружины:

@SpringBootApplication
@EnableCaching
@EnableAsync
@EnableScheduling
@EnableIgniteRepositories(value="com.fico.ps.smart.model.ignite.repository",queryLookupStrategy = Key.CREATE)
@EnableJpaRepositories("com.fico.ps.smart.model.onboarding.repository")
public class Application extends SpringBootServletInitializer {

мои зависимости:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-api</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-to-slf4j</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-commons</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.hibernate.validator</groupId>
                <artifactId>hibernate-validator</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.17</version>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.17</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.6</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-api</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-core</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-jul</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-slf4j-impl</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.json/json -->
    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20180813</version>
    </dependency>   
    <!-- https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-mapper-asl -->
    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.5.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-impl -->
    <dependency>
        <groupId>org.apache.taglibs</groupId>
        <artifactId>taglibs-standard-impl</artifactId>
        <version>1.2.5</version>
    </dependency>
    <dependency>
        <groupId>org.tmatesoft.svnkit</groupId>
        <artifactId>svnkit</artifactId>
        <version>1.9.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.ignite</groupId>
        <artifactId>ignite-core</artifactId>
        <version>2.7.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.ignite</groupId>
        <artifactId>ignite-spring</artifactId>
        <version>2.7.0</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-commons</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.ignite</groupId>
        <artifactId>ignite-spring-data</artifactId>
        <version>2.7.0</version>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-commons</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.apache.ignite</groupId>
        <artifactId>ignite-indexing</artifactId>
        <version>2.7.0</version>
    </dependency>
     <dependency>
        <groupId>org.apache.ignite</groupId>
        <artifactId>ignite-slf4j</artifactId>
        <version>2.7.0</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

Ответы [ 3 ]

0 голосов
/ 14 июля 2019

Мне удалось решить эту ошибку со следующей конфигурацией зависимостей:

    <dependency>
        <groupId>org.apache.ignite</groupId>
        <artifactId>ignite-spring-data_2.0</artifactId>
        <version>2.7.5</version>
        <exclusions>
            <!-- org.apache.ignite.springdata20.repository.support.IgniteRepositoryFactory depends in 2.0.x -->
            <exclusion>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-commons</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <!-- This is the latest version in the 2.0.x stream -->
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-commons</artifactId>
        <version>2.0.14.RELEASE</version>
    </dependency>
0 голосов
/ 31 июля 2019

Как указал Брюс, версия 2.0.14. Выпуск spring-data-commons - единственный, который работает.Я попробовал эту более новую версию и получил ошибку также!

<dependency>
        <groupId>org.apache.ignite</groupId>
        <artifactId>ignite-spring-data_2.0</artifactId>
        <version>${ignite.version}</version>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-commons</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-commons</artifactId>
        <version>2.1.6.RELEASE</version>
    </dependency>
0 голосов
/ 31 января 2019

Я нашел решение.

проблема заключалась в поддержке пружинной загрузки 2.0. X ignite имеет специальную библиотеку данных пружины _2.0.он поддерживает только 2.7.0.

<dependency>
            <groupId>org.apache.ignite</groupId>
            <artifactId>ignite-spring-data_2.0</artifactId>
            <version>${ignite.version}</version>
        </dependency>

после этого методы запроса работают нормально :)

...