Neo4j Пространственная проблема: findWithinDistance: ava.lang.IllegalArgumentException: указатель с тем же именем, но существует другая конфигурация

110
18

Нам нужно найти набор объектов благодаря геолокации на определенном расстоянии радиуса.

Мы пытаемся использовать пространственную библиотеку Neo4 J, используя класс SpatialRepository для реализации метода "findWithinDistance"

Вставьте использованный код для реализации с типом индекса POINT для хранения долготы и широты объекта:

@NodeEntity
@TypeAlias(value="MyObject")
public class MyObject{

@GraphId Long nodeId;
private String label;
private String description;
private Double lat;
private Double lon;

@Indexed(indexType = IndexType.POINT, indexName = "locations")
String wkt;

public void setLocation(float longitude, float latitude) {
this.wkt = String.format("POINT( %.2f %.2f )",longitude,longitude);
}

1) Для первого запуска у нас нет проблем с созданием объектов в базе данных neo4j (мы можем видеть объекты с правильными данными в neo4j). Для второго запуска или создания нового объекта мы говорим: индекс с тем же имя, но существует другая конфигурация!

java.lang.IllegalArgumentException: Index with the same name but different config exists!
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'objectRepositoryImpl': Injection of autowired dependencies failed;
nested exception is org.springframework.beans.factory.BeanCreationException:
Could not autowire field: org.springframework.data.neo4j.support.Neo4jTemplate fr.spart.is.neo4j.repository.ObjectRepositoryImpl.template;
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'neo4jTemplate'
defined in class org.springframework.data.neo4j.config.Neo4jConfiguration: Instantiation of bean failed;
nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.springframework.data.neo4j.support.Neo4jTemplate org.springframework.data.neo4j.config.Neo4jConfiguration.neo4jTemplate()
throws java.lang.Exception] threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'neo4jMappingContext' defined in class org.springframework.data.neo4j.config.Neo4jConfiguration:
Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Index with the same name but different config exists!
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:292)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1185)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:703)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760)

Еще один момент для метода, который я должен реализовать findWithinDistance: мы должны сделать методы шаблона или запрос Neo4j Cypher для поиска объектов?

Спасибо за помощь,

Не стесняйтесь, если вам нужны уточнения

спросил(а) 2014-10-30T17:11:00+03:00 6 лет, 8 месяцев назад
1
Решение
77

Как вы это используете?

Возможно, вы сначала запустили вариант "чистого запроса", который вызвал создание индекса как индекс lucene, а не пространственный индекс?

Вы также можете удалить индекс с помощью шаблона neo4j (вам, вероятно, придется комментировать аннотацию для этого исправления для запуска)

ответил(а) 2014-11-01T07:55:00+03:00 6 лет, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема