0

面白い状況です。私はゲームに取り組んでいます。オブジェクト「スペース」の2D配列を持つボードがあります。各「スペース」には、オブジェクト「境界」(北、東、南、西)への4つの参照があります。

スペースは「境界」への参照を共有します。たとえば、場所(0,0)の「スペース」は、その東の境界を場所(1,0)の「スペース」の西の境界と共有します。これにより、何かが発生したときに境界を1回だけ更新できます(壁が破壊された場合は壁からなしまで)。

Hibernateを使用してこのようなものを永続化する方法はありますか?私は実際には多くのスペースを持つ1対多の境界を持っていますが、それらを特定の境界(北、南、西、東)に具体的に関連付ける方法がわかりません。また、2つの「スペース」オブジェクトが単一の境界オブジェクトへの参照を共有するようにこれを設定する方法もわかりません。

public class Space {
  private Boundary northBoundry;
  private Boundary eastBoundry;
  private Boundary southBoundry;
  private Boundary westBoundry;

  //hero on the Space
  private HeroBase hero;

  private long     spaceId;

  //getters and setters
}

public class Boundary {

  public static final String NONE        = "none";
  public static final String CLOSED_DOOR = "closed_door";
  public static final String OPEN_DOOR   = "open_door";
  public static final String WALL        = "wall";

  private String             type;
  long                       boundaryId;

  //getters and setters
}
4

1 に答える 1

0

あなたが説明するのは、 Space と各 Boundary の間の多対1の関係です:

public class Space {
  @ManyToOne
  @JoinColumn(name="NORTH_BOUNDARY")
  private Boundary northBoundary;

  @ManyToOne
  @JoinColumn(name="EAST_BOUNDARY")
  private Boundary eastBoundary;

  @ManyToOne
  @JoinColumn(name="SOUTH_BOUNDARY")
  private Boundary southBoundary;

  @ManyToOne
  @JoinColumn(name="WEST_BOUNDARY")
  private Boundary westBoundary;
}
于 2013-02-28T09:50:36.300 に答える