Cor*_*han 2 java spring spring-data
我试图传递一个迭代器作为Spring Data中方法的参数,但是eclipse告诉我Java正在尝试调用相同方法的普通实体重载.
public void persistLandTiles(List<LandTile> tilesToPersist) {
landTileRepo.save(tilesToPersist.iterator());
}
Run Code Online (Sandbox Code Playgroud)
错误:
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>
Run Code Online (Sandbox Code Playgroud)
和调用的接口方法:
@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);
Run Code Online (Sandbox Code Playgroud)
我自动连接的界面:
public interface LandTileRepo extends CRUDRepository<LandTile>, SpatialRepository<LandTile> {
}
Run Code Online (Sandbox Code Playgroud)
谁能告诉我我做错了什么,它试图称之为"U save(U entity);" 方法而不是"Iterable save(Iterable entities);" 方法?
另外,因为看起来接受迭代器的方法只是调用entity.persist(),所以在foreach循环中调用save(U实体)是否有任何不足之处?
谁能告诉我我做错了什么,它试图称之为"U save(U entity);" 方法而不是"Iterable save(Iterable entities);" 方法?
那么save(Iterable<U> entities)显然是无效的在这里,因为你有一个Iterator<E>,而不是一个Iterable<E>.他们是不同的类型.给定两个方法重载这都为你想传递参数无效,则编译器挑一个抱怨......它并没有真正多大关系,它说是无效的,海事组织.
目前还不清楚为什么要打电话iterator(),但是你应该尝试将代码更改为:
public void persistLandTiles(List<LandTile> tilesToPersist) {
landTileRepo.save(tilesToPersist);
}
Run Code Online (Sandbox Code Playgroud)
毕竟,List<E>扩展Iterable<E>- 所以这个方法调用将是有效的...
| 归档时间: |
|
| 查看次数: |
4925 次 |
| 最近记录: |