Neo4j ノードを Neo4j グラフに保存すると、ノードのみが保存されます (関係はありません)。誰かが私がそこに欠けているものを正しい方向に向けることができますか?
ここに私のノードがあります
@NodeEntity public class Game extends AbstractEntity{
public Long timestamp;
public double total_pot_size;
public int flop;
public int turn;
public int river;
@Relationship(type = "ROUND")
public Set<Round> rounds;
@Relationship(type = "OUTCOME")
public Set<Outcome> outcomes;
public Game() {
super();
}
public void add(Outcome outcome) {
if (outcomes == null) {
outcomes = new HashSet<Outcome>();
}
outcomes.add(outcome);
}
public void add(Round round) {
if (rounds == null) {
rounds = new HashSet<Round>();
}
rounds.add(round);
}
}
と
@NodeEntity public class Player extends AbstractEntity {
public String name;
public String platform;
@Relationship(type = "PARTICIPATION", direction = Relationship.OUTGOING)
public Set<Participation> involved_games;
@Relationship(type = "OWNS")
public Set<Statistics> statistics;
public Player() {
super();
}
public void participate(Participation involved_game) {
if (involved_games == null) {
involved_games = new HashSet<Participation>();
}
involved_games.add(involved_game);
}
public void add(Statistics stat) {
if (statistics == null) {
statistics = new HashSet<>();
}
statistics.add(stat);
}
}
これが私のデータを保存するために使用するコードです。
// create or get a new game in database
Game game = gameRepo.save( DataUtil.createGame(gi) );
// get the player involved to the game
List<Player> players = gi.getPlayers();
// for each player involved to the game...
for (Player player : players) {
org.quazar.data.domain.Player p = store(player);
// relationship participation
p.participate(DataUtil.createParticipation(p, game, player));
// set the outcome of the players
game.add(DataUtil.createOutcome(game, p, gi, player));
playerRepo.save(p);
}
gameRepo.save( game );
store(player) メソッドは、適切に機能するプレーヤーを保存または取得します (新規でない場合)。DataUtil.createParticipation および DataUtil.createOutcome メソッドは、新しい関係を作成し (ge new Outcome())、プロパティを設定します。
アプリケーションを実行しても例外は発生しませんが、グラフでは関係が失われます。
すべてのノード (Statistics など) をリストしませんでした。現在、モデルでそれらを使用していないためです。問題が発生する可能性はありますか?
以下にいくつかの関係を示します。
@RelationshipEntity(type = "PARTICIPATION")
public class Participation extends AbstractEntity {
@StartNode
public Player player;
@EndNode
public Game game;
@Property
public double bankroll;
@Property
public int holecards;
@Property
public byte position;
public Participation () {
super();
}
}
と
@RelationshipEntity(type = "OUTCOME")
public class Outcome extends AbstractEntity {
@StartNode
public Game game;
@EndNode
public Player player;
@Property
public String type;
@Property
public String round;
@Property
public double pot_size;
@Property
public double ante;
@Property
public int holecards;
@Property
public String bestHand;
@Property
public int bestHandrank;
public Outcome() {
super();
}
}