R.B*_*.B. 4 neo4j spring-data-neo4j spring-data-neo4j-4
我根据NodeEntity的Enum属性查询问题.
有问题的NodeEntity定义如下:
@NodeEntity(label = "Entity")
public class MyEntity {
@GraphId
private Long internalId;
....
private State state;
@Transient
public enum State {
STATEONE, STATETWO, STATETHREE
}
....
Run Code Online (Sandbox Code Playgroud)
它保存没有问题,状态Enum表示完美,我可以使用其他属性(字符串)查询完全没有问题.但问题是存储库中的以下查询:
@Query("MATCH (entity:Entity {state:{0}})" +
"RETURN entity")
List<MyEntity> findByState(MyEntity.State state)
Run Code Online (Sandbox Code Playgroud)
即查找具有给定状态的所有实体.
没有例外,但是使用它只会返回0个实体的列表.
我已经尝试了各种各样的变体,例如使用WHERE子句,没有运气.
实体持久存在,在同一测试中使用findAll()返回预期的实体列表,其状态与我期望的完全一致.
有什么想法吗?
不太清楚这个值@Transient增加了枚举的含义.无论如何,它不能作为Neo4j中的节点或关系持久化.将字段定义为应该持久化的字段就足够了
private State state;
并@Transient从枚举中删除注释.有了它,SDN会忽略发送到派生查询的字段.
但是,如果您有充分的理由标记枚举@Transient,请分享它,我们将重新访问此案例.
| 归档时间: |
|
| 查看次数: |
377 次 |
| 最近记录: |