NodeEntityのEnumプロパティに基づいて問合せに問題があります。問題のリポジトリクエリでenumを使用できません(neo4j/Springデータ)
NodeEntityが定義されている:
@NodeEntity(label = "Entity")
public class MyEntity {
@GraphId
private Long internalId;
....
private State state;
@Transient
public enum State {
STATEONE, STATETWO, STATETHREE
}
....
それは問題なく保存し、状態列挙型は完全に代表される、と私は全く問題なく、他のプロパティ(文字列)を使用して照会することができます。しかし、問題は、リポジトリ内の次のクエリです。
@Query("MATCH (entity:Entity {state:{0}})" +
"RETURN entity")
List<MyEntity> findByState(MyEntity.State state)
つまり、指定された状態のすべてのエンティティを見つけます。
これは例外ではありませんが、これを使用すると、List of 0 Entitiesが返されます。
これは、たとえばWHERE句を使用していますが、これはすべての種類の変更を試みました。
エンティティは適切に保持されます。同じテストでfindAll()を使用すると、期待どおりの状態のエンティティが返されます。
どのような考えですか?
こんにちはR.B!属性状態がneo4jデータベースに正しく保存されていますか?あなたのユースケースを再現しようとしましたが、enum @Transientを宣言すると、属性の状態は保持されません。一時的な注釈ステータスの削除は正しく行われており、クエリは正常に機能しています。それを試してみることができますか? – troig
これは間違いなく永続化されました。私の場合、エンティティは問題なく保存でき、「状態」プロパティはTransactionメソッドを使用して変更することさえできます。しかし、列挙型定義のTransientが実際に問題を引き起こしていました。ありがとう、それなしでは、私は照会することができます、問題はありません。 –