Help with Hibernate mapping
- by GigaPr
Hi
i have the following classes
public class RSS
{
private Integer id;
private String title;
private String description;
private String link;
private Date dateCreated;
private Collection rssItems;
private String url;
private String language;
private String rating;
private Date pubDate;
private Date lastBuildDate;
private User user;
private Date dateModified;
public RSS() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public void setDescription(String description){
this.description = description;
}
public String getDescription(){
return this.description;
}
public void setLink(String link){
this.link = link;
}
public String getLink(){
return this.link;
}
public void setUrl(String url){
this.url = url;
}
public String getUrl(){
return this.url;
}
public void setLanguage(String language){
this.language = language;
}
public String getLanguage(){
return this.language;
}
public void setRating(String rating){
this.rating = rating;
}
public String getRating(){
return this.rating;
}
public Date getPubDate() {
return pubDate;
}
public void setPubDate(Date pubDate) {
this.pubDate = pubDate;
}
public Date getLastBuildDate() {
return lastBuildDate;
}
public void setLastBuildDate(Date lastBuildDate) {
this.lastBuildDate = lastBuildDate;
}
public Date getDateModified() {
return dateModified;
}
public void setDateModified(Date dateModified) {
this.dateModified = dateModified;
}
public Date getDateCreated() {
return dateCreated;
}
public void setDateCreated(Date dateCreated) {
this.dateCreated = dateCreated;
}
public Collection getRssItems() {
return rssItems;
}
public void setRssItems(Collection rssItems) {
this.rssItems = rssItems;
}
}
public class RSSItem {
private RSS rss;
private Integer id;
private String title;
private String description;
private String link;
private Date dateCreated;
private Date dateModified;
private int rss_id;
public RSSItem() {}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getLink() {
return link;
}
public void setLink(String link) {
this.link = link;
}
public Date getDateCreated() {
return dateCreated;
}
public void setDateCreated(Date dateCreated) {
this.dateCreated = dateCreated;
}
public Date getDateModified() {
return dateModified;
}
public void setDateModified(Date dateModified) {
this.dateModified = dateModified;
}
public RSS getRss() {
return rss;
}
public void setRss(RSS rss) {
this.rss = rss;
}
}
that i mapped as
<hibernate-mapping>
<class name="com.rssFeed.domain.RSS" schema="PUBLIC" table="RSS">
<id name="id" type="int">
<column name="ID"/>
<generator class="native"/>
</id>
<property name="title" type="string">
<column name="TITLE" not-null="true"/>
</property>
<property name="lastBuildDate" type="java.util.Date">
<column name="LASTBUILDDATE"/>
</property>
<property name="pubDate" type="java.util.Date">
<column name="PUBDATE" />
</property>
<property name="dateCreated" type="java.util.Date">
<column name="DATECREATED" not-null="true"/>
</property>
<property name="dateModified" type="java.util.Date">
<column name="DATEMODIFIED" not-null="true"/>
</property>
<property name="description" type="string">
<column name="DESCRIPTION" not-null="true"/>
</property>
<property name="link" type="string">
<column name="LINK" not-null="true"/>
</property>
<property name="url" type="string">
<column name="URL" not-null="true"/>
</property>
<property name="language" type="string">
<column name="LANGUAGE" not-null="true"/>
</property>
<property name="rating" type="string">
<column name="RATING"/>
</property>
<set inverse="true" lazy="false" name="rssItems">
<key>
<column name="RSS_ID"/>
</key>
<one-to-many class="com.rssFeed.domain.RSSItem"/>
</set>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="com.rssFeed.domain.RSSItem" schema="PUBLIC" table="RSSItem">
<id name="id" type="int">
<column name="ID"/>
<generator class="native"/>
</id>
<property name="title" type="string">
<column name="TITLE" not-null="true"/>
</property>
<property name="description" type="string">
<column name="DESCRIPTION" not-null="true"/>
</property>
<property name="link" type="string">
<column name="LINK" not-null="true"/>
</property>
<property name="dateCreated" type="java.util.Date">
<column name="DATECREATED"/>
</property>
<property name="dateModified" type="java.util.Date">
<column name="DATEMODIFIED"/>
</property>
<many-to-one class="com.rssFeed.domain.RSS" fetch="select" name="rss">
<column name="RSS_ID"/>
</many-to-one>
</class>
</hibernate-mapping>
But when i try to fetch an RSS I get the following error
Exception occurred in target VM: failed to lazily initialize a collection of role: com.rssFeed.domain.RSS.rssItems, no session or session was closed
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.rssFeed.domain.RSS.rssItems, no session or session was closed
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)
at org.hibernate.collection.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:97)
at org.hibernate.collection.PersistentSet.size(PersistentSet.java:139)
at com.rssFeed.dao.hibernate.HibernateRssDao.get(HibernateRssDao.java:47)
at com.rssFeed.ServiceImplementation.RssServiceImplementation.get(RssServiceImplementation.java:46)
at com.rssFeed.mvc.ViewRssController.handleRequest(ViewRssController.java:20)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:431)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:332)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:233)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
at java.lang.Thread.run(Thread.java:619)
<
what does it mean?
Thanks