[Hibernate] one to many mapping

Pagina: 1
Acties:
  • 32 views sinds 30-01-2008

  • Ti_Uhl
  • Registratie: Mei 2003
  • Laatst online: 19-09-2012
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

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)

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:37
eentje is genoeg hoor.

https://fgheysels.github.io/


Dit topic is gesloten.