0

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();
    }
}
4

0 に答える 0