После обновления с SDN 2.3.4 до 3.0.0.RELEASE у меня есть два теста, которые не выполняются:
Index name for class java.lang.String name rel: false idx: true must differ from the default name: BesoinNode
В классе BesoinNode
я ранее использовал @Indexed(indexName = "indexOfNeeds")
, но удалил indexName
из-за https://stackoverflow.com/a/22084251/1528942 а>. Теперь мое объявление индекса просто:
@Indexed
private String name;
Код неудачного теста:
@Test
public final void t02_TestBesoinDAORetrieve() {
// We create a new object in the datastore
Besoin need1 = needDAO.create(new BesoinNode("t02 need"));
assertEquals(new Long(1), needDAO.count());
// We retrieve the object from the datastore using its id
Besoin need1bis = needDAO.retrieveById(need1.getId());
assertEquals(need1, need1bis);
assertEquals(need1.getId(), need1bis.getId());
assertEquals(need1.getName(), need1bis.getName());
// We retrieve the object from the datastore using its name
Besoin need1ter = needDAO.retrieveByName(need1.getName());
assertEquals(need1, need1ter);
assertEquals(need1.getId(), need1ter.getId());
assertEquals(need1.getName(), need1ter.getName());
}
Тест завершится успешно, если я закомментирую вызов retrieveByName
. Код ниже:
@Override
public Besoin retrieveByName(String name) {
return repository.findByPropertyValue("name", name);
}
Как я могу переписать свой метод retrieveByName
, чтобы устранить ошибку? Спасибо!
Примечание. Хотя это может и не быть связано с проблемой, я вижу в API, что IndexRepository#findByPropertyValue(String, Object)
устарел. Только AbstractGraphRepository#findByPropertyValue(String, Object)
не устарел. Проблема в том, что мой репозиторий расширяет GraphRepository
, а GraphRepository
расширяет IndexRepository
, что я не могу контролировать.
Примечание 2. Использование @Indexed(indexType = IndexType.SIMPLE)
делает тест успешным. Но это переключает старую систему индексов (а не новую, основанную на метках).