私は、次の基本エンティティがあります。私はこのクラスにlikes
ゲッター/セッターを追加するときに、現在のクラスのすべてが正常に動作しますが、と春データのNeo4j 4、OGMと@Relationship注釈
@NodeEntity
public class Likeable extends Authorable {
private final static String CONTAINS = "CONTAINS";
@Relationship(type = CONTAINS, direction = Relationship.INCOMING)
private Set<Like> likes = new HashSet<>();
private long totalLikes;
private long totalDislikes;
private double likeSum;
public long getTotalLikes() {
return totalLikes;
}
public void setTotalLikes(long totalLikes) {
this.totalLikes = totalLikes;
}
public long getTotalDislikes() {
return totalDislikes;
}
public void setTotalDislikes(long totalDislikes) {
this.totalDislikes = totalDislikes;
}
public double getLikeSum() {
return likeSum;
}
public void setLikeSum(double likeSum) {
this.likeSum = likeSum;
}
}
を:
public Set<Like> getLikes() {
return likes;
}
public void setLikes(Set<Like> likes) {
this.likes = likes;
}
私のテストは、アサーションエラー(例外なし)で失敗します。たとえば、クエリの削除後です。
しかし、ゲッター/セッターの上に
@Relationship(type = CONTAINS, direction = Relationship.INCOMING)
を追加した後、すべてが再び正常に動作を開始:
@NodeEntity
public class Likeable extends Authorable {
private final static String CONTAINS = "CONTAINS";
@Relationship(type = CONTAINS, direction = Relationship.INCOMING)
private Set<Like> likes = new HashSet<>();
private long totalLikes;
private long totalDislikes;
private double likeSum;
@Relationship(type = CONTAINS, direction = Relationship.INCOMING)
public Set<Like> getLikes() {
return likes;
}
@Relationship(type = CONTAINS, direction = Relationship.INCOMING)
public void setLikes(Set<Like> likes) {
this.likes = likes;
}
...
}
は、それが正しく注釈付きNodeEntity
クラスですか?私には、この種の宣言は少し冗長に見えます。この場合、正しい宣言は何ですか?
あなたの答えをありがとう。 'addLike(Like like)'、 'removeLike(Like like)'のような、すべての可能なミューテータ(getter/setterメソッドだけでなく)にもこのアノテーションを追加する必要がありますか? – alexanoid
いいえ、ゲッター/セッターだけです。ミューテータは、直列化中には使用されません。 –