Spring Dataのメソッドの引数としてイテレーターを渡そうとしていますが、Eclipseは、Javaが同じメソッドのプレーンエンティティオーバーロードを呼び出そうとしていることを示しています。
public void persistLandTiles(List<LandTile> tilesToPersist) {
landTileRepo.save(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>
呼び出されるインターフェイスメソッド:
@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);
自動配線されている私のインターフェース:
public interface LandTileRepo extends CRUDRepository<LandTile>, SpatialRepository<LandTile> {
}
「Usave(Uentity)」と呼ぼうとしている私が間違っていることを誰かに教えてもらえますか?「Iterablesave(Iterableentities);」の代わりにメソッド 方法?
また、イテレータを受け入れるメソッドはとにかくentity.persist()を呼び出すだけのように見えるので、とにかくforeachループでsave(U entity)を呼び出すだけの欠点はありますか?