2014-03-06 110 views
0

我有型号命名文章和一个名为店模式,关系是多对多休眠OneToOne和懒惰获取问题

文章

@ManyToMany(fetch = FetchType.LAZY) 
@JoinTable(
     name="shop_article", 
     [email protected](name="article_id"), 
     [email protected](name="shop_id") 
) 
private Set<Shop> shops = new HashSet<Shop>(); 

店:

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

我的店有关系OneToOne同页面

店铺:

@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商店:从视图选择,页面不提取,是正确的。

问题在哪里? 我的代码粘贴哪些内容以提供帮助?

回答

0

听起来像一个懒惰的加载问题。我不太了解你的模特,但是你是否真的想要一家店而不参考一个网页?可能不会吧?因此,将fetch更改为EAGER,如果您使用休眠,则添加@Fetch(FetchMode.SELECT)

+0

你不明白我的模型?也许我加入了错误的事情?我想从Shop中选择唯一的ID和名称,在视图中做选择列表我不想获取任何关系对象。
@Fetch(FetchMode.SELECT) - 它在干什么? – kuka11