2013-02-27 65 views
0

我有一個有趣的情況。我正在製作一款遊戲。我有一個有2d對象'Space'的數組。每個「空間」有四個對象「邊界」(北,東,南,西)的引用。休眠 - 如何堅持'落後'一對多

空間共享對「邊界」的引用。例如,位置(0,0)處的「空間」與位置(1,0)處的「空間」的西邊界共享其東邊界。這允許我只在發生某些事情時才更新邊界(如從牆到牆,如果被破壞)。

任何想法如何使用Hibernate來堅持這樣的東西?我真的有一對一的邊界有很多空間,但我不知道如何將它們特定地與特定邊界(北,南,西,東)聯繫起來。我也不知道如何設置它,以便兩個「空間」對象共享對單個邊界對象的引用。

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 
} 

回答

0

你描述的是空間和每個邊界之間的多到一個關係:

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