Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将迭代器传递给方法_Java_Spring_Spring Data - Fatal编程技术网

Java 将迭代器传递给方法

Java 将迭代器传递给方法,java,spring,spring-data,Java,Spring,Spring Data,我试图在Spring数据中传递一个迭代器作为方法的参数,但是eclipse告诉我Java试图调用同一方法的普通实体重载 public void persistLandTiles(List<LandTile> tilesToPersist) { landTileRepo.save(tilesToPersist.iterator()); } public void persistLandTiles(列表tiles persist){ 保存(tilesToPersist.ite

我试图在Spring数据中传递一个迭代器作为方法的参数,但是eclipse告诉我Java试图调用同一方法的普通实体重载

public void persistLandTiles(List<LandTile> tilesToPersist) {
    landTileRepo.save(tilesToPersist.iterator());

}
public void persistLandTiles(列表tiles persist){
保存(tilesToPersist.iterator());
}
错误:

Bound mismatch: The generic method save(U) of type CRUDRepository<T> is not applicable
 for the arguments (Iterator<LandTile>). The inferred type Iterator<LandTile> is not a
 valid substitute for the bounded parameter <U extends LandTile>
绑定不匹配:Crudepository类型的通用方法save(U)不适用
对于参数(迭代器)。推断的类型迭代器不是
有界参数的有效替换
以及正在调用的接口方法:

@NoRepositoryBean
public interface CRUDRepository<T> extends PagingAndSortingRepository<T, Long> {

    /**
     * persists an entity by forwarding to entity.persist()
     * @param entity to be persisted
     * @return the saved entity (being the same reference as the parameter)
     */
    @Transactional
    <U extends T> U save(U entity);


    /**
     * persists the provided entities by forwarding to their entity.persist() methods
     * @param entities to be persisted
     * @return the input iterable
     */
    @Transactional
    <U extends T> Iterable<U> save(Iterable<U> entities);
@NoRepositoryBean
公共接口CRUDepository扩展了分页和排序存储库{
/**
*通过转发到entity.persist()来持久化实体
*@param要持久化的实体
*@返回保存的实体(与参数引用相同)
*/
@交易的
U储蓄(U实体);
/**
*通过转发到提供的实体。persist()方法来持久化这些实体
*@param要持久化的实体
*@返回输入值
*/
@交易的
Iterable保存(Iterable实体);
正在自动连线的我的界面:

public interface LandTileRepo extends CRUDRepository<LandTile>, SpatialRepository<LandTile>  {  
}
公共界面LandTileRepo扩展了Crudepository,SpatialRepository{
}
有谁能告诉我我做错了什么,它试图调用“U保存(U实体);”方法而不是“Iterable保存(Iterable实体);”方法

另外,由于它看起来像是接受迭代器的方法只是调用entity.persist(),所以在foreach循环中调用save(U entity)有什么不利之处吗

有谁能告诉我我做错了什么,它试图调用“U保存(U实体);”方法而不是“Iterable保存(Iterable实体);”方法

save(可编辑实体)
显然在这里无效,因为您有一个
迭代器,而不是
Iterable
。它们是不同的类型。给定两个方法重载,它们对您试图传递的参数都无效,编译器选择了一个来抱怨……依我看,它所说的无效并不重要

不清楚为什么要调用
iterator()
,但您应该尝试将代码更改为:

public void persistLandTiles(List<LandTile> tilesToPersist) {
    landTileRepo.save(tilesToPersist);    
}
public void persistLandTiles(列表tiles persist){
landTileRepo.save(tilesToPersist);
}

毕竟,
List
扩展了
Iterable
——所以这个方法调用将是有效的…

当我查询东西时,我一直在处理只返回迭代器的类“EndResult”,所以我一直不得不将迭代器转换为列表,我认为它们也只接受迭代器。