2014-10-27 131 views
7

我正在尋找一種解決方案,在mongodb java彈簧框架中使用null dbref保存對象。請看下面的例子:如何在mongodb java spring中使用null dbref保存對象?

@Document 
public class A { 
    @Id 
    private String id; 
    @DBRef 
    private B b; 

    public A() { 
     this.b = null; 
    } 

    ... 
} 

@Document 
public class B { 
    @Id 
    private String id; 
} 

現在,如果我實例化一個,即A a = new A();並保存該對象通過資源庫的MongoDB,即aRepo.save(a)。然後,我有以下例外:

org.springframework.data.mapping.model.MappingException: Cannot create a reference to an object with a NULL id. 

有沒有辦法用空dbref保存對象?

感謝您的幫助!

+0

一般來說你指到錯誤發生時您嘗試保存的實體點到一個尚未保存或沒有'id'集合的引用(非'null')引用。鑑於上面的代碼,我不能重現這個問題 - 所以我很好奇你使用的是哪個版本的'spring-data-mongodb'? – 2014-10-28 07:45:01

+0

的確,我查了一下資料來源,有一個像id == null這樣的檢查嗎?拋出異常。我的版本是 1.6.0.RELEASE awesome 2014-10-29 13:13:43

+0

嘿!我也有同樣的問題。你有沒有找到解決辦法? – gabby 2014-11-05 21:43:30

回答

0

爲Variant,你可以像創建NullObject:

public final static B NULL_B = new B(""); 

,並用它來代替空的

public A() { 
    this.b = NULL_B; 
} 
+0

而且spring-data只向B collection中添加一個空文檔,以便所有使用NullObject調用save()方法 – bald2b 2015-04-01 15:16:42

相關問題