2014-10-27 68 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