Невозможно создать экземпляр org.apache.lucene.spatial3d.geom.GeoPolygon (создатели, такие как конструкция по умолчанию, не существуют) - PullRequest
0 голосов
/ 21 сентября 2018

Моим приложением является Spring-загрузка сasticsearch,

@Document(indexName = "mtile",type = "tile")
class Tile 
{
    @Id
    private String tileId;
    private String country;
    private GeoPolygon location;
}

 @PostMapping(value ="insertTiles/{tileFile}/{country}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public String insertTiles(@PathVariable(name = "tileFile", required = true) MultipartFile tileFile,
        @PathVariable(name = "country", required = true) String country) throws IOException {
        File file= FileUtils.getLocalCopyOfFile(tileFile) ;
        tileService.insertTile(file,country);
        FileUtils.deleteLocalCopyOfFile(file);
        return "Inserted";
    }

public void insertTile(File file, String country) {

        try {
            List<Tile> mortonTilesList=new ArrayList<>();
            List<String> tilesList = Files.readAllLines(Paths.get(file.getAbsolutePath()));
            tilesList.forEach(s -> {
                String[] str=s.split(",");
                LinkedHashSet countryset=new LinkedHashSet();
                countryset.add(country);
                MortonTile mTile= MortonTile.fromMortonHex(str[0]);
                GeoPolygon polygon=GeoPolygonFactory.makeGeoPolygon(PlanetModel.WGS84,getGeoPoints(mTile));

                Tile tile = new Tile(mTile.getMortonHex(), country, polygon);
                mortonTilesList.add(tile);
            });
            tileRepository.saveAll(mortonTilesList);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

При упругом поиске данные вставляются правильно, но при получении ошибки получения Невозможно создать экземпляр org.apache.lucene.spatial3d.geom.GeoPolygon (нет создателей, как и конструкция по умолчанию, существует)

@GetMapping(value = "/getTilesByCountry/{country}")
    public List<Tile> getTilesByCountry(@PathVariable(name = "country", required = true) String country) {
        return tileService.findByCountry(country);
    }

Реализация:

public List<Tile> findByCountry(String country) {
        return tileRepository.findByCountry(country);
    }

Репозиторий:

@EnableElasticsearchRepositories
public interface TileRepository extends ElasticsearchRepository<Tile, String> {

    Tile findByTileId(String tileId);

    List<Tile> findByCountry(String country);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...