У меня возникла проблема с запросом на основе свойства Enum моего NodeEntity.Невозможно использовать перечисление в запросе репозитория (neo4j/Spring Data)
NodeEntity в вопросе определяется:
@NodeEntity(label = "Entity")
public class MyEntity {
@GraphId
private Long internalId;
....
private State state;
@Transient
public enum State {
STATEONE, STATETWO, STATETHREE
}
....
Это экономит без проблем, состояние Enum представляется совершенно, и я могу запросить, используя свойства (строки) без проблем вообще. Однако проблема заключается в следующем запросе в репозитории:
@Query("MATCH (entity:Entity {state:{0}})" +
"RETURN entity")
List<MyEntity> findByState(MyEntity.State state)
т. Е. Найти все объекты с данным состоянием.
Не исключение, однако использование этого просто возвращает список из 0 сущностей.
Я пробовал всевозможные варианты этого, используя предложение WHERE, например, без везения.
Объекты сохраняются должным образом, используя findAll() в том же тесте, возвращает ожидаемый список объектов с их состояниями точно так, как я ожидал бы.
Любые мысли?
Привет @ R.B! Вы уверены, что состояние атрибута правильно сохранено в базе данных neo4j? Я попытался воспроизвести ваш прецедент и объявить enum @Transient, состояние атрибута не сохраняется. Снятие состояния переходной аннотации выполняется правильно, и запрос также работает нормально. Не могли бы вы попробовать? – troig
Это определенно сохранялось. Для меня объекты могут быть сохранены без проблем, а свойство «state» может быть даже изменено с использованием метода транзакции. Однако переходный процесс по определению enum действительно вызывал проблемы. Спасибо, без него я могу запросить, никаких проблем. –