Java SpringMVC和Hibernate:如何打印左连接字段?
我不熟悉Spring(MVC)和Hibernate。。。我遇到了以下问题: 我正在开发一个RSS应用程序,简而言之,它解析RSS提要,将字段存储在数据库中,并在网页上显示RSS信息 一些RSS源获得了一个图像。我在解析和存储它方面没有问题,但在显示它和RSS信息时遇到了问题。RSS信息存储在一个表中(字段:id、标题、说明、url、链接、语言、日期),而RSS图像信息存储在另一个表中(字段:id、标题、说明、url、高度、宽度、RSS_id)。应该有一对一的关系 我用于检索所有RSS的Hibernate查询如下所示,并且正在运行:Java SpringMVC和Hibernate:如何打印左连接字段?,java,hibernate,spring-mvc,Java,Hibernate,Spring Mvc,我不熟悉Spring(MVC)和Hibernate。。。我遇到了以下问题: 我正在开发一个RSS应用程序,简而言之,它解析RSS提要,将字段存储在数据库中,并在网页上显示RSS信息 一些RSS源获得了一个图像。我在解析和存储它方面没有问题,但在显示它和RSS信息时遇到了问题。RSS信息存储在一个表中(字段:id、标题、说明、url、链接、语言、日期),而RSS图像信息存储在另一个表中(字段:id、标题、说明、url、高度、宽度、RSS_id)。应该有一对一的关系 我用于检索所有RSS的Hiber
public List<RSS> getAllRSS() {
return getHibernateTemplate().find("from RSS as rss left join fetch rss.rssImage as image");
}
这是有效的。但是如何从图像中检索字段呢
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;
}
}
谢谢:)在您的jsp中:
<table>
<c:forEach var="rssItem" items="${rss}">
<tr>
<td>
${rssItem.name}
</td>
</tr>
</c:forEach>
</table>
${rssItem.name}
然后在你的控制器里
@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;
}
@RequestMapping(value=“/something”)
公共模型和视图getRSS(){
ModelAndView mv=newmodelandview(“someJSP.jsp”);
列表rss=//从Hibernate获取rss
mv.addObject(“rss”,rss);
返回mv;
}
您的rssImage映射为一个集合,而不是一对一的关系。因此,您必须遍历图像集合以打印每个单独的图像
否则,请更新映射,使rssImage只是一个图像。rss图像信息只包含字符串类型的文件,例如标题、url、高度、宽度。这同样适用于这些领域吗?似乎你的例子展示了如何打印图像,而不仅仅是常规字符串……那么我不理解你的问题。您正在尝试以字节[]形式获取图像吗?你的物品是什么?你能把你的课发出去吗?哦……对不起。我添加了我的RSS和RSS图像类。希望您能理解:)我只是想把RSS图像中的属性和RSS中的属性一起打印出来,但我不知道如何获取RSS图像属性。@jorgen,对不起。我想你问的问题要复杂得多。有点晚了,但请看我更新的答案:)您的Hibernate映射文件是什么样子的?给定一个名为RSS的RSS对象,您只需将其正确配置为另一个表中的字段显示为RSS.image.url等。是的,这正是我需要的!
@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;
}