Search code examples
spring-bootspring-datamaven-3ignite

Why i get a problem with deleteAll method of IgniteRepository?


I try to implement ignite 2.6.0 with spring boot 2.1.0.RELEASE, but when i clean install the code i get the following exception:

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

It's about a maven projet and here is the dependencies:

<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);
}
}

Repository

@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
}

Well, i dont use any methode to delete so why it gives me this exception ! Is that a conflict of versions some where ? Have you any idea ?


Solution

  • I also try to same thing Ignite 2.6 and Spring Boot 2.1.0 and the IgniteReposities don't work either. I'm pretty sure that Ignite Spring Data 2.6 module doesn't support Spring 5.

    As workaround I access the data with a SqlQuery in a class Dao something like:

        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());