一千萬個為什麽

搜索

用註釋映射Hibernate中坐標的Hashmap

我剛剛開始使用hibernate,我正在嘗試將兩個坐標之間的步行距離映射到一個hashmap,從一個“FromCoordinate”到另一個“ToCoordinate”可以有很多連接。我不確定我是否正確實現了這個,我需要用什麽註釋來映射這個MashMap?謝謝

HashMap> coordWalkingConnections = new HashMap>();

@Entity
@Table(name = "COORDCONNECTIONS")
public class CoordinateConnection implements Serializable{

    private static final long serialVersionUID = -1624745319005591573L;

    /** auto increasing id number */
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID")
    @id
    private int id;

    @Embedded
    public FromCoordinate fromCoord;

    @Embedded
    public ToCoordinate toCoord;


HashMap> coordWalkingConnections = new HashMap>();

}

public class FromCoordinate implements ICoordinate
{
    @Column(name = "FROM_LAT")
    private double latitude;

    @Column(name = "FROM_LNG")
    private double longitude;
}

public class ToCoordinate implements ICoordinate
{

    @Column(name = "TO_LAT")
    private double latitude;

    @Column(name = "TO_LNG")
    private double longitude;

    @Column(name = "DISTANCE")
    private double distance;
}

DATABASE STRUCTURE
id  FROM_LAT    FROM_LNG    TO_LAT      TO_LNG      Dist
1   43.352669   -6.264341   43.350012   -6.260653   0.38
2   43.352669   -6.264341   43.352669   -6.264341   0.00
3   46.352669   -6.264341   43.353373   -6.262013   0.17
4   47.352465   -6.265865   43.351290   -6.261200   0.25
5   45.452578   -6.265768   43.352788   -6.264396   0.01
6   45.452578   -6.265768   45.782788   -6.234523   0.01
    .....
    ...
    .

Example HashMap for HashMap>





最佳答案

在我看來,你必須在初始化中使用接口類型的集合。

代替:

HashMap> coordWalkingConnections = new HashMap>();

使用:

Map> coordWalkingConnections = new HashMap>();

如果您閱讀hibernate文檔: http:// docs .jboss.org/hibernate/core/3.3/reference/en/html/collections.html 您將閱讀:

實際的接口可能是java.util.Set,java.util.Collection,   java.util.List,java.util.Map,java.util.SortedSet,   java.util.SortedMap或任何你喜歡的東西(“你喜歡的任何東西”的意思   你將不得不寫一個實現   org.hibernate.usertype.UserCollectionType。)

     

註意實例變量是如何使用實例初始化的   HashSet的。這是初始化集合值的最佳方法   新實例化(非持久)實例的屬性。當你   通過調用persist()使實例持久化,例如,   Hibernate實際上會用一個實例替換HashSet   Hibernate自己的Set實現。請註意以下事項   錯誤:

我不知道這是否是唯一的錯誤。 希望這會對你有所幫助。

轉載註明原文: 用註釋映射Hibernate中坐標的Hashmap