为什么我在使用 IgniteRepository 的 deleteAll 方法时遇到问题?
Why i get a problem with deleteAll method of IgniteRepository?
我尝试使用 spring 启动 2.1.0.RELEASE
来实现 ignite 2.6.0
,但是当我全新安装代码时,出现以下异常:
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>
点燃配置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>{}
实体
@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
}
好吧,我没有使用任何删除方法,所以为什么它给我这个异常!那是某个地方的版本冲突吗?
你有什么想法吗?
我也尝试同样的事情 Ignite 2.6 和 Spring Boot 2.1.0 和 IgniteReposities 也不起作用。我很确定 Ignite Spring Data 2.6 模块不支持 Spring 5.
作为解决方法,我在 class Dao 中使用 SqlQuery 访问数据,例如:
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());
您需要使用 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>
这适用于 spring-boot 2.1.6.RELEASE 和 ignite 2.7.5
我尝试使用 spring 启动 2.1.0.RELEASE
来实现 ignite 2.6.0
,但是当我全新安装代码时,出现以下异常:
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>
点燃配置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>{}
实体
@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
}
好吧,我没有使用任何删除方法,所以为什么它给我这个异常!那是某个地方的版本冲突吗? 你有什么想法吗?
我也尝试同样的事情 Ignite 2.6 和 Spring Boot 2.1.0 和 IgniteReposities 也不起作用。我很确定 Ignite Spring Data 2.6 模块不支持 Spring 5.
作为解决方法,我在 class Dao 中使用 SqlQuery 访问数据,例如:
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());
您需要使用 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>
这适用于 spring-boot 2.1.6.RELEASE 和 ignite 2.7.5