내 NodeEntity의 Enum 속성을 기반으로 쿼리하는 데 문제가 있습니다.리포지토리 쿼리에서 열거 형을 사용할 수 없습니다 (neo4j/스프링 데이터)
그것은 문제없이 저장@NodeEntity(label = "Entity")
public class MyEntity {
@GraphId
private Long internalId;
....
private State state;
@Transient
public enum State {
STATEONE, STATETWO, STATETHREE
}
....
이 상태 열거 완벽하게 표현, 나는 전혀 문제없이 다른 속성 (문자열)를 사용하여 조회 할 수 있습니다
문제의 NodeEntity가 정의됩니다. 그러나 문제는 저장소의 다음 쿼리입니다.
@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) 정의에서 실제로 문제가 발생했습니다. 고맙습니다. 질문이 없으면 아무런 문제가 없습니다. –