[英]Force property order in Spring Data MongoDB mapping
我有一個位置 object,當它們持久保存到 mongodb 時,我需要強制屬性的順序,但我沒有太多運氣弄清楚如何去做。 位置 class 看起來像:
Location {
float lat;
float lon;
County county;
}
當它堅持到mongo時,縣總是在緯度和經度之前。 這是一個問題,因為我試圖在其上放置一個地理索引,並且前兩個屬性必須是緯度/經度。
我努力了:
@XmlRootElement(name="location")
@XmlType(propOrder={"latitude", "longitude", "county"})
Location {
float lat;
float lon;
County county;
}
當位置 object 被序列化為 xml 給我的客戶時,這有效,但不是數據庫。 似乎 spring 數據或某些 mongo 映射器總是按字母順序做事。
有誰知道如何強制訂單屬性持久化到 mongo 中? 謝謝!
您可以使用 @Field 注釋的 order 屬性來強制字段順序。 所以,如果你有:
Location {
@Field(order = 1)
float lat;
@Field(order = 2)
float lon;
@Field(order = 3)
County county;
}
這些字段按以下順序保留:緯度、經度、縣。
大家都知道,我一直在與 Spring 開發人員交談,他們要求我針對該問題提交 JIRA,因為目前無法執行此操作。 JIRA 可以在這里找到: https://jira.springsource.org/browse/DATADOC-172
為了完整起見,我最終制作了一個包含緯度/經度的點 object,並索引了 object。 這樣,它是 object 中唯一的東西,順序無關緊要。
在相關的說明中,就在今天,我了解到如果您要進行空間查詢,您必須按以下順序存儲您的屬性:經度、緯度。 您可以在此處查看更多信息,但我今天用這個把頭撞到牆上有一段時間了,所以如果您要存儲地理查詢的點,請確保它們的順序正確。 這意味着您將經度放在 class 中。 我想您也可以使用 @Field 屬性對它們進行注釋。
目前尚不清楚您使用什么將 POJO 轉換為 MongoDB。 像 Morphia (http://code.google.com/p/morphia) 這樣的映射器將使用 class 中聲明的字段順序。 也有多種方式可以控制這一點。
如果這是 Spring 數據(框架)問題,我建議前往他們的論壇尋求支持。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.