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 :
Als ik nu met volgende code probeer alles uit de db te halen krijg ik onderstaande exception :
Echter haalt hij wel alles uit ps_album Deze execption komt dus enkel op het moment dat ik die pictures eruit wil halen.
Ik heb ook al op google en hibernate forum zitten zoeken maar vind niet echt veel meer uitleg over hoe ik die mapping wel juist moet maken.
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:
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
36
37
38
39
| 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) |
Echter haalt hij wel alles uit ps_album Deze execption komt dus enkel op het moment dat ik die pictures eruit wil halen.
Ik heb ook al op google en hibernate forum zitten zoeken maar vind niet echt veel meer uitleg over hoe ik die mapping wel juist moet maken.
[ Voor 3% gewijzigd door Ti_Uhl op 24-10-2006 20:21 ]