Hibernate OneToOne和懒惰提取问题

时间:2014-03-06 18:59:36

标签: hibernate spring-mvc lazy-loading one-to-one

我有名为Article的模型和名为Shop的模型,关系是ManyToMany

@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(
        name="shop_article",
        joinColumns=@JoinColumn(name="article_id"),
        inverseJoinColumns=@JoinColumn(name="shop_id")
)
private Set<Shop> shops = new HashSet<Shop>();

商店:

@ManyToMany(mappedBy="shops", fetch=FetchType.LAZY)
    private Set<Article> articles = new HashSet<Article>();

我的商店与OneToOne和Page

有关系

商店:

@OneToOne( fetch=FetchType.LAZY)
@Cascade({CascadeType.DELETE, CascadeType.DELETE_ORPHAN})
@JoinColumn(name = "page_id")
private Page page;

除了一个细节外,它的效果很好 当我尝试添加新文章时,在我的视图中我使用

<form:select path="shops" multiple="true"
            items="${shops}" itemLabel="name" itemValue="id" />

我的商店对象获取所有页面关系。但是当我在控制器中的sysout商店或删除表单时:从视图中选择,页面没有提取,是正确的。

问题出在哪里? 我的代码的哪一部分要粘贴帮助?

1 个答案:

答案 0 :(得分:0)

听起来像是一个懒惰的加载问题。我真的不了解你的模型,但是你真的想要一个没有引用页面的商店吗?可能不对,对吧?因此,将fetch更改为EAGER,如果您正在使用休眠,请添加@Fetch(FetchMode.SELECT)