Почему я получаю проблему с методом deleteAll IgniteRepository? - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь реализовать ignite 2.6.0 с пружинной загрузкой 2.1.0.RELEASE, но когда я очищаю код установки, я получаю следующее исключение:

name clash: deleteAll(java.lang.Iterable<ID>) in org.apache.ignite.springdata.repository.IgniteRepository and deleteAll(java.lang.Iterable<? extends T>) in org.springframework.data.repository.CrudRepository have the same erasure, yet neither overrides the other

Это про Maven Projet и вот зависимости:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.ignite</groupId>
        <artifactId>ignite-core</artifactId>
        <version>2.6.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.ignite</groupId>
        <artifactId>ignite-slf4j</artifactId>
        <version>2.6.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.ignite</groupId>
        <artifactId>ignite-spring-data</artifactId>
        <version>2.6.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.ignite</groupId>
        <artifactId>ignite-spring</artifactId>
        <version>2.6.0</version>
        <exclusions>
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-jpa</artifactId>
    </dependency>
</dependencies>

Ignite config class

@Configuration
@EnableIgniteRepositories
public class IgniteConfig {
@Bean
public Ignite igniteInstance() {
  IgniteConfiguration config = new IgniteConfiguration();

  CacheConfiguration<String, MyEntity> cacheMyEntity = new CacheConfiguration<>("MyEntityCach");
  cacheMyEntity.setIndexedTypes(String.class, MyEntity.class);

  CacheConfiguration[] cacheConfiguration= new CacheConfiguration[] {cacheMyEntity};
  config.setCacheConfiguration(cacheConfiguration);
  return Ignition.start(config);
}
}

Репозиторий

@RepositoryConfig(cacheName = "MyEntityCach")
public interface EntityRepository extends IgniteRepository<MyEntity, String>{}

Entity

@Getter
@Setter
@Builder
public class MyEntity implements Serializable{

@QuerySqlField(index = true)
private String id;

@QuerySqlField()
private String label;

@QuerySqlField()
private Long number;

@QuerySqlField(index = true)
private Long idParent
}

Ну, я не использую какой-либо метод для удаления, так почему он дает мне это исключение! Это где-то конфликт версий? Есть идеи?

Ответы [ 2 ]

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

Вам нужно использовать ignite-spring-data_2.0 вместо ignite-spring-data:

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

Это работает для пружинной загрузки 2.1.6. ВЫПУСК и зажигание 2.7.5

0 голосов
/ 12 ноября 2018

Я также пытаюсь сделать то же самое в Ignite 2.6 и Spring Boot 2.1.0, и IgniteReposities тоже не работают. Я уверен, что модуль Ignite Spring Data 2.6 не поддерживает Spring 5.

В качестве обходного пути я обращаюсь к данным с помощью SqlQuery в классе Dao что-то вроде:

    SqlQuery<String, MyEntity> sql = new SqlQuery<>(MyEntity.class, SQL_SELECT);
    //You can set arguments
    //sql.setArgs(composante, typeValeur);
    return myEntityCache.query(sql).getAll().stream().map(Entry::getValue)
    .collect(Collectors.toList());
...