2012-10-15 88 views
0

我使用Spring Data來管理我的MongoDB數據庫。Mongo Spring Data「foreign」key

在一個集合上,我有2個ObjectId字段,_id和另一個引用另一個集合的實例。

我收藏的類是這樣的:

public class CollectionA 
{ 
private ObjectId id; 
private String collectionADescription 
private ObjectId collectionBId 
} 

,像這樣規定的I類是能夠插入了「外鍵」成功地爲$ OID。

的問題是,我得到以下綁定錯誤:如果我設置爲字符串變量插入的字符串而不是$ OID

我怎樣才能做到這一點的collectionBId變量

Field error in object 'collectionA' on field 'collectionBId': rejected value []; codes [typeMismatch.collectionA.collectionBId,typeMismatch.collectionBId,typeMismatch.org.bson.types.ObjectId,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [collectionA.collectionBId,collectionBId]; arguments []; default message [collectionBId]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'org.bson.types.ObjectId' for property 'collectionBId'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [org.bson.types.ObjectId] for property 'collectionBId': no matching editors or conversion strategy found]

Thans

回答

2

如果你真的想在你的數據存儲關係,你應該使用Spring數據MongoDB的@DBRef註解。但我建議您重新考慮/重新設計您的模式,以利用嵌入式文檔。也許this文件將幫助你設計更好的模式。