簡體   English   中英

休眠-如何保持一對多的“后退”

[英]Hibernate - how to persist a 'backward' one-to-many

我有一個有趣的情況。 我正在玩游戲。 我有一個帶有2維對象“空間”陣列的電路板。 每個“空間”都有對對象“邊界”的四個引用(北,東,南,西)。

空格共享對“邊界”的引用。 例如,位置(0,0)的“空間”與位置(1,0)的“空間”的西邊界共享其東邊界。 這使我僅在發生某些情況時才更新邊界(例如,如果牆被破壞,則從牆到無)。

知道如何使用Hibernate來保持類似的東西嗎? 我確實有一個一對多的邊界,邊界上有很多空間,但是我不確定如何將它們特別關聯回特定的邊界(北,南,西,東)。 我也不知道如何進行設置,以使兩個“ Space”對象共享對單個邊界對象的引用。

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
}

您所描述的是空間與每個邊界之間的多對一關系:

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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM