У меня есть такая сущность:
@NodeEntity
public class Move {
@Id @GeneratedValue private Long id;
@Property("placement")
private String placement;
@Relationship(type="PARENT", direction=Relationship.INCOMING)
BoardPosition parent;
@Relationship("CHILD")
BoardPosition child;
[...]
Когда я «загружаю» это так:
Move the_move = m_store.findByPlacement("C1");
log.info("Move direct load: " + the_move.toString());
работает нормально. Оба свойства parent
и child
имеют правильные значения.
Однако, когда я обращаюсь к нему через запрос, определенный следующим образом:
public interface MoveStore extends Neo4jRepository<Move, Long> {
public Move findByPlacement(String placement);
@Query("MATCH (n:Move) RETURN n")
public List<Move> findAll();
и доступен так:
ListIterator<Move> moves = m_store.findAll().listIterator();
while(moves.hasNext() ) {
log.info(moves.next().toString());
}
отсутствует значение child
(равно нулю).
Этот эксперимент странный:
while(moves.hasNext() ) {
Move m = moves.next();
log.info(m.toString()); // This is missing m.child's value
// find the same Move, by passing in the id of this one:
m = m_store.findById(m.id).orElse(null);
log.info(m.toString()); // This has the correct value for m.child!
}
Что мне не хватает? Как сделать так, чтобы запрос загружал дочернее свойство?