У меня есть простое соотношение (счета) - [IdentifiedBy] -> (идентичность), определяемое как этотSpringData свойства Neo4j узел не заселенно
@RelatedTo(type = "IDENTIFIED_BY", direction = Direction.OUTGOING)
private Set<Identity> identities = new HashSet<Identity>();
Когда я загружаю счет и получить доступ к его личности, все тождества загружаются, но все их свойства, кроме ID, являются нулевыми. Однако, если я аннотирую свойство с помощью @Fetch, то тождества загружаются правильно, со всеми свойствами. Это по дизайну или я чего-то не хватает?
@NodeEntity
public class Account {
@GraphId Long nodeId;
@RelatedTo(type = "IDENTIFIED_BY", direction = Direction.OUTGOING)
//@Fetch
private Set<Identity> identities = new HashSet<Identity>();
public Set<Identity> getIdentities() {
return identities;
}
public void setIdentities(Set<Identity> identities) {
this.identities = identities;
}
}
@NodeEntity
public class Identity {
@GraphId Long nodeId;
private String identifier;
public String getIdentifier() {
return identifier;
}
public void setIdentifier(String identifier) {
this.identifier = identifier;
}
}
public interface AccountRepository extends GraphRepository<Account> { }
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"/test-context.xml"})
@Transactional
public class AccountTests {
@Autowired
protected AccountRepository accountRepository;
@Test
public void accountMustLoadItsIdentities() {
Account acct = accountRepository.save(new Account());
Identity id = new Identity();
id.setIdentifier("merlin");
acct.getIdentities().add(id);
accountRepository.save(acct);
acct = accountRepository.findOne(acct.nodeId);
id = acct.getIdentities().iterator().next();
assertEquals("merlin", id.getIdentifier());
}
}
Тестирование модуля завершается с ошибкой при последнем утверждении, но успешно выполняется, если @Fetch on Account раскоментирован.
Это дизайн. Если вы хотите, чтобы отношения были с нетерпением ожидаемыми, вам понадобится аннотация. Если вы не хотите использовать аннотацию, ознакомьтесь с расширенным режимом сопоставления в документации. – tstorms