Java 将迭代器传递给方法
我试图在Spring数据中传递一个迭代器作为方法的参数,但是eclipse告诉我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
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”,所以我一直不得不将迭代器转换为列表,我认为它们也只接受迭代器。