Spring Data Mongo MongoDB DBRef 懒加载初始化

8

我正在使用Spring + Spring Data MongoDB。 我的模型如下:

@Document(collection = "actors")
public class Actor extends DomainEntity {

private String name;
private String surname;
@DBRef(lazy = true)
private List<Class> classes;

另一个类比较通用,所以我不会发布它。 我的问题是,当我尝试访问列表“classes”时,它没有被加载,该属性仍然是某种代理对象。 例如:
Actor a = actorRepository.findOne(id);
//At this moment classes are a proxy object because of the lazy

//Now I try to load the reference and nothing works
a.getClasses();
a.getClasses().size();
a.getClases().get(0).getAttr();
for(Class g:a.getClasses()){
        g.getAttr();
    }

我考虑了很多方案,但没有一种能让它正常工作...


所以,问题到底是什么?哪里出了问题?你遇到了哪些异常?你希望看到什么?如果你不想为“Class”使用代理,就不要让它变成懒加载。 - Oliver Drotbohm
我认为他想使用lazy加载,但在某些特定情况下,他需要从数据库中读取的bean被完全利用。这是可能的吗? - pagurix
1个回答

7

我正在使用spring-data-mongodb-1.7.0.RELEASE,我能够通过在声明中初始化延迟加载的集合来解决这个问题,例如:

@DBRef(lazy = true)
private List<Class> classes = new ArrayList<>();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接