Ik ben wat aan het spelen met hibernate maar krijg het volgende niet opgelost.
Ik heb een database met 2 tabellen namelijk ps_album en ps_picture
In ps_picture heb ik album_id wat een FK is voor ps_album
Nu heb ik volgende mapping gemaakt
Mijn Album class zien er als volgt uit :
[code]
package com.photoShare.model.DAO;
import java.util.HashSet;
import java.util.Set;
public class AlbumDAO {
private int id;
private String name;
private String description;
private String location;
private String date;
private int frontPic;
private Set pictures;
private String foldername;
public AlbumDAO() {
this.id = 0;
this.name = new String();
this.description = new String();
this.location = new String();
this.date = new String();
this.frontPic = 0;
this.foldername = new String();
this.pictures = null;
}
public Set getPictures() {
return pictures;
}
public void setPictures(Set list) {
this.pictures = list;
}
...
}
Als ik nu met volgende code probeer alles uit de db te halen krijg ik onderstaande exception :
Ik heb een database met 2 tabellen namelijk ps_album en ps_picture
In ps_picture heb ik album_id wat een FK is voor ps_album
Nu heb ik volgende mapping gemaakt
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.photoShare.model.Album" table="ps_album">
<id name="id" column="id">
<generator class="increment" />
</id>
<property name="name" column="name" />
<property name="description" column="description" />
<property name="location" column="location" />
<property name="date" column="cdate" />
<property name="frontPic" column="frontpic" />
<property name="foldername" column="foldername" />
<set name="pictures" cascade="all">
<key column="album_id" />
<one-to-many class="com.photoShare.model.Picture" />
</set>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="com.photoShare.model.Picture" table="ps_picture">
<id name="id" column="id">
<generator class="increment" />
</id>
<property name="album_id" column="album_id"/>
<property name="filename" column="filename"/>
</class>
</hibernate-mapping> |
Mijn Album class zien er als volgt uit :
[code]
package com.photoShare.model.DAO;
import java.util.HashSet;
import java.util.Set;
public class AlbumDAO {
private int id;
private String name;
private String description;
private String location;
private String date;
private int frontPic;
private Set pictures;
private String foldername;
public AlbumDAO() {
this.id = 0;
this.name = new String();
this.description = new String();
this.location = new String();
this.date = new String();
this.frontPic = 0;
this.foldername = new String();
this.pictures = null;
}
public Set getPictures() {
return pictures;
}
public void setPictures(Set list) {
this.pictures = list;
}
...
}
Als ik nu met volgende code probeer alles uit de db te halen krijg ik onderstaande exception :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| DAOManager manager = new DAOManager();
List<Album> albums = manager.getAlbums();
for (Album album : albums) {
System.out.println(album.getName());
System.out.println(album.getDescription());
HashSet pics = (HashSet) album.getPictures();
Iterator i = pics.iterator();
while (i.hasNext()) {
Picture p = (Picture) i.next();
System.out.println(p.getFilename());
}
} |
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| javax.servlet.ServletException: org.hibernate.collection.PersistentSet
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1858)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:446)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
java.lang.ClassCastException: org.hibernate.collection.PersistentSet
com.photoShare.actions.Testhbm.execute(Testhbm.java:32)
org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:53)
org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:64)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:48)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:280)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1858)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:446)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802) |