2011-06-13 54 views
3

我是新来的春天(MVC)和休眠...我得到以下问题:Spring MVC和Hibernate:如何打印出左侧加入的字段?

我正在开发一个RSS应用程序,它简单地解析RSS提要,将字段存储在数据库中,并显示RSS网页上的信息。

一些RSS提要有图片。我没有问题解析和存储它,但我有一个问题与RSS信息一起显示。 RSS信息存储在一个表格(字段:id,标题,描述,网址,链接,语言,日期),而RSS图像信息存储在另一个表格(字段:id,title,description,url,height,width, rss_id)。应该有一对一的关系。

我的Hibernate查询retriving所有的RSS这个样子,并正在努力:

public List<RSS> getAllRSS() { 
    return getHibernateTemplate().find("from RSS as rss left join fetch rss.rssImage as image"); 
} 

对于打印出我用下面的代码的RSS信息:

RSSService rssService = (RSSService) ctx.getBean("rssService"); 
RSS rss = new RSS(); 
List list = rssService.listAllRSS(); 

Iterator i = list.iterator(); 
while(i.hasNext()){ 
      rss = (RSS) i.next(); 
      System.out.println("rss title:" + rss.getTitle()); 
} 

,这是工作。但是,我怎样才能从图像中检索字段?

RSS类:

public class RSS { 

private Integer id; 
private String title; 
private Date dateCreated; 
private String description; 
private String link; 
private String url; 
private String language; 
private String rating; 
private Date dateModified; 
private Set rssItems; 
private Set rssImage; 

/** 
* @return the id 
*/ 
public Integer getId() { 
    return id; 
} 

/** 
* @param id the id to set 
*/ 
public void setId(Integer id) { 
    this.id = id; 
} 

public Date getDateCreated() { 
    return dateCreated; 
} 

public void setDateCreated(Date dateCreated) { 
    this.dateCreated = dateCreated; 
} 

public String getTitle() { 
    return title; 
} 

public void setTitle(String title) { 
    this.title = title; 
} 

public Date getDateModified() { 
    return dateModified; 
} 

public void setDateModified(Date dateModified) { 
    this.dateModified = dateModified; 
} 

public String getDescription() { 
    return description; 
} 

public void setDescription(String description) { 
    this.description = description; 
} 

public String getLanguage() { 
    return language; 
} 

public void setLanguage(String language) { 
    this.language = language; 
} 

public String getLink() { 
    return link; 
} 

public void setLink(String link) { 
    this.link = link; 
} 

public String getRating() { 
    return rating; 
} 

public void setRating(String rating) { 
    this.rating = rating; 
} 

public String getUrl() { 
    return url; 
} 

public void setUrl(String url) { 
    this.url = url; 
} 

/** 
* @return the rssItems 
*/ 
public Set getRssItems() { 
    return rssItems; 
} 

/** 
* @param rssItems the rssItems to set 
*/ 
public void setRssItems(Set rssItems) { 
    this.rssItems = rssItems; 
} 

/** 
* @return the rssImage 
*/ 
public Set getRssImage() { 
    return rssImage; 
} 

/** 
* @param rssImage the rssImage to set 
*/ 
public void setRssImage(Set rssImage) { 
    this.rssImage = rssImage; 
} 
} 

RSS图片类:

public class RSSImage { 

private Integer id; 
private String title; 
private String url; 
private String description; 
private String width; 
private String height; 
private Date dateCreated; 
private Date dateModified; 
private RSS rss; 

/** 
* @return the id 
*/ 
public Integer getId() { 
    return id; 
} 

/** 
* @param id the id to set 
*/ 
public void setId(Integer id) { 
    this.id = id; 
} 

/** 
* @return the title 
*/ 
public String getTitle() { 
    return title; 
} 

/** 
* @param title the title to set 
*/ 
public void setTitle(String title) { 
    this.title = title; 
} 

/** 
* @return the url 
*/ 
public String getUrl() { 
    return url; 
} 

/** 
* @param url the url to set 
*/ 
public void setUrl(String url) { 
    this.url = url; 
} 

/** 
* @return the description 
*/ 
public String getDescription() { 
    return description; 
} 

/** 
* @param description the description to set 
*/ 
public void setDescription(String description) { 
    this.description = description; 
} 

/** 
* @return the width 
*/ 
public String getWidth() { 
    return width; 
} 

/** 
* @param width the width to set 
*/ 
public void setWidth(String width) { 
    this.width = width; 
} 

/** 
* @return the height 
*/ 
public String getHeight() { 
    return height; 
} 

/** 
* @param height the height to set 
*/ 
public void setHeight(String height) { 
    this.height = height; 
} 

/** 
* @return the dateCreated 
*/ 
public Date getDateCreated() { 
    return dateCreated; 
} 

/** 
* @param dateCreated the dateCreated to set 
*/ 
public void setDateCreated(Date dateCreated) { 
    this.dateCreated = dateCreated; 
} 

/** 
* @return the dateModified 
*/ 
public Date getDateModified() { 
    return dateModified; 
} 

/** 
* @param dateModified the dateModified to set 
*/ 
public void setDateModified(Date dateModified) { 
    this.dateModified = dateModified; 
} 

/** 
* @return the rss 
*/ 
public RSS getRss() { 
    return rss; 
} 

/** 
* @param rss the rss to set 
*/ 
public void setRss(RSS rss) { 
    this.rss = rss; 
} 
} 

谢谢:)

+1

你的Hibernate映射文件是什么样的?给定一个名为rss的RSS对象,你只需要为其他表中的字段进行配置就可以显示为rss.image.url等。 – gatkin 2011-06-13 14:54:26

+0

是的,这正是我需要的! – jorgen 2011-06-13 16:23:35

回答

2

你有你的rssImage映射为一个集合,而不是一对一的关系。所以你必须遍历你的图像集合来打印每个单独的图像。

否则,请更新您的映射,以便rssImage只是一个映像。

+0

哦,当然是!非常感谢 :) – jorgen 2011-06-13 17:59:51

1

在你的JSP:

<table> 
<c:forEach var="rssItem" items="${rss}"> 
    <tr> 
    <td> 
    ${rssItem.name} 
    </td> 
    </tr> 
</c:forEach> 
</table> 

然后在你的控制器

@RequestMapping(value = "/something") 
public ModelAndView getRSS() { 
ModelAndView mv = new ModelAndView("someJSP.jsp"); 
List<RSS> rss = //get your RSS from Hibernate 
mv.addObject("rss",rss); 
return mv; 
} 
+0

rss图片信息只包含字符串类型的文件,例如标题,网址,高度,宽度。这同样适用于这些领域吗?看起来像你的例子显示如何打印出一个图像,而不是只有正常的字符串.... – jorgen 2011-06-13 13:30:41

+0

然后,我不明白你的问题。你想要获取图像作为字节[]?你的物品是什么?你可以请你上课吗? – 2011-06-13 13:34:54

+0

哦....对不起。我添加了我的RSS和RSS图像类。希望你能理解:)我只是试图从RSS图像中打印出属性以及来自RSS的属性,但我不知道如何获取RSS图像属性。 – jorgen 2011-06-13 15:52:08

相关问题