ディアーズを見つけることができません。私は春ブーツ(1.5.7.RELEASE)と春データのNeo4j(4.2.7.RELEASE)とのNeo4j-OGMと非常に簡単なアプリケーションを作成しました 、NodeEntityまたは関連するエンティティ
( 2.1.5)。私のpom.xmlの関連部品:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-neo4j</artifactId>
</dependency>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-ogm-test</artifactId>
<version>${neo4j-ogm.version}</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
私は2つの簡単なエンティティと(一般的なもので)片方の親があります。
@NodeEntity
public abstract class BaseEntity {
@GraphId
private Long id;
@Convert(value = InstantConverter.class)
private Instant createdOn;
private Date modifiedOn;
}
public class User extends BaseEntity {
@Index(unique = true)
private String username;
@Index(unique = true)
private String email;
private String password;
public User() {
//default
}
public User(String username, String email, String password) {
this.username = username;
this.email = email;
this.password = password;
}
}
public class Tag extends BaseEntity {
@Index
private String label;
@Relationship(type = "CREATOR")
private User creator;
public Tag() {}
public Tag(String label, User creator) {
this.label = label;
this.creator = creator;
}
}
を私はセッター/ゲッター/等しい/のハッシュコードを削除明快さ。ここで
@Configuration
@EnableNeo4jRepositories(value = "xxx.repository")
public class Neo4jConfiguration {
@Bean
public NewEntityPreSaveEventListener newEntityPreSaveEventListener() {
return new NewEntityPreSaveEventListener();
}
}
は、私が使用するリポジトリです::
できるだけシンプルにしようとしている、のNeo4jのためにこの設定を使用して...本当に、
@Repository
public interface TagRepository extends GraphRepository<Tag> {
Tag findOneByLabelAndCreator(String label, User creator);
Tag findOneByLabel(String label);
Tag findOneByCreator(User creator);
@Query("MATCH (tag:Tag)-[:CREATOR]->(creator:User) WHERE id(creator) = {creatorId} RETURN tag")
@Depth(value = 5)
Tag getByCreator(@Param("creatorId") User creator);
}
派手なので、何も
と仮定すると、
User myCreator = userRepository.save(new User("myCreator", "email", "password"));
Tag myTag = tagRepository.save(new Tag("taglabel", myCreator));
「tagRepository.findOneByLabel( "taglabel")」を実行すると、すべてのプロパティが設定されたタグが返されます。完璧!
「tagRepository.findOneByCreator(myCreator)」を実行すると、単にnullが返されます。
"tagRepository.getByCreator(myCreator)"を実行すると、正しいラベルのタグが返されますが、 "creator"というプロパティはnullです。
私は本当にそれを取得しません。もちろん、私はドキュメントを読んで、@Depth、Custom @Queryを試してみました。フィールドの "Set tags"のUserクラスに@Relationshipを追加し、インデックスを削除しています。それは単に適切に動作したくありません。 私は非常に、非常に愚かな何かを逃すべきであることはとてもシンプルです... 残念ながら、私が見つけたすべての例は、これより簡単です...これはあまり有用ではありません。
ご協力いただきありがとうございます。