NodeEntityのEnumプロパティに基づくクエリで問題が発生しました。
問題の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()を使用すると、期待どおりの状態のエンティティのリストが返されます。
何かご意見は?
値@Transient
が列挙型に何を追加するかはよくわかりません。とにかく、Neo4jのノードまたは関係として永続化することはできません。フィールドを永続化する必要があるフィールドとして定義するだけで十分です
private State state;
オフのままに@Transient
列挙型から注釈を。これにより、SDNは派生クエリに送信されたフィールドを無視します。
ただし、列挙型を@Transientとマークする正当な理由がある場合は、共有してください。このケースを再検討します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加