Hibernate无法从DB检索完整对象

时间:2015-04-15 07:34:48

标签: java hibernate

我正面临着Hibernate的奇怪问题,并且没有想到为什么会发生这种情况。

我的类别实体是以一对多关系自我加入的:

@ManyToOne
@JoinColumn(name = "PARENT")
private Category parentCategory;

@OneToMany(fetch = FetchType.EAGER, mappedBy = "parentCategory", orphanRemoval=true)
@Cascade(CascadeType.SAVE_UPDATE)
private Set<Category> childrenCategories;

我正在以这种方式保存父母和孩子之间的关系:

//passing preselected parentCategory and creating newCategory
newCategory.setParentCategory(parentCategory);
sessionFactory.getCurrentSession().save(newCategory);

这导致DB中有两行:

ID|NAME |PARENT
1 |Test |(null)
2 |Test2|1
当#1是父母而#2是孩子时,

似乎没问题。

我从DB获取数据:

(Category) sessionFactory.getCurrentSession().get(Category.class, id);

当我使用#1执行此操作时 - 一切正常,Hibernates获得完整的对象,填充Set。但是,当我试图获得#2时,Hibernate实际上只映射了ID字段:

Category@...
childrenCategories  null    
id  Integer  (id=111)   
name    null    
parentCategory  null    
products    null    

后面会在代码中导致多个NPE。

这种行为可能是什么原因?从我的角度来看,所有关系都设置正确。此外,我试图用类似的方法在我的弹簧上下文之外创建类似的类,一切似乎都没问题。

感谢您的任何建议。

0 个答案:

没有答案