[hibernate-users] collection doesn't get all matching entries

Anja Fischer, IBE anja.fischer at ibe.med.uni-muenchen.de
Mon Jun 11 06:56:31 EDT 2007


Hi Hibernate users,

since a few days I am puzzling about a problem with a one-to-many
collection mapping. 
The collection does just fetch one single element and not all matching
entries.

A 'student' has many 'exams'. There are 2 tables STUDENT and EXAM. They
are connected with the primary key of a student named 'matrinumber'.
I have written a student mapping which contains a set with exams.

Here is the mapping code: 
	
	<class name="beans.Student" table="Student" lazy="false">
      	<id name="matrinumber" type="long"></id>
            <property 	name="sex" column="sex" type="string"/>
		<property 	name="academictitle"
column="academictitle" type="string"/>
		<property 	name="surname" column="surname"
type="string"/>
		<property 	name="firstname" column="firstname"
type="string"/>
		<property 	name="beginnpractyear"
column="beginnpractyear" type="integer"/>
		<property 	name="email" column="email"
type="string"/>
		<property 	name="telephone" column="telephone"
type="string"/>
		<property 	name="mobile" column="mobile"
type="string"/>
		<property 	name="notice" column="notice"
type="text"/>
		<one-to-one name="marks" class="beans.Mark"
cascade="all" constrained="true"/>
		<set name="exams" lazy="false">
      		<key column="matrinumber"/>
     	 		<one-to-many class="beans.Exam"/>
    		</set>
      </class>
      <class name="beans.Exam" table="Exam" lazy="false">
            <id name="matrinumber" type="long"></id>
            <property 	name="datum" column="datum" type="calendar"/>
            <property 	name="subject" column="subject" type="string"/>
            <property 	name="participated" column="participated"
type="boolean"/>
            <property 	name="excused" column="excused" type="boolean"/>
            <property 	name="mark" column="mark" type="float"/>
            <property 	name="comment" column="comment" type="string"/>
	</class>

The sql code is following:

CREATE TABLE `exam` (
  `matrinumber` bigint(20) unsigned NOT NULL,
  `datum` date NOT NULL,
  `subject` varchar(2) NOT NULL,
  `participated` tinyint(1) default NULL,
  `excused` tinyint(1) default NULL,
  `mark` float unsigned NOT NULL,
  `comment` varchar(500) default NULL,
  KEY `matrinumber` (`matrinumber`),
  CONSTRAINT `exam_ibfk_1` FOREIGN KEY (`matrinumber`) REFERENCES
`student` (`matrinumber`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `student` (
  `matrinumber` bigint(20) unsigned NOT NULL,
  `sex` varchar(1) default NULL,
  `academictitle` varchar(50) default NULL,
  `surname` varchar(50) NOT NULL,
  `firstname` varchar(30) NOT NULL,
  `beginnpractyear` int(11) NOT NULL,
  `email` varchar(60) NOT NULL,
  `telephone` varchar(20) default NULL,
  `mobile` varchar(20) default NULL,
  `notice` text,
  PRIMARY KEY  (`matrinumber`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

How already written above, I always get just one single element in the
collection exams. But in the database are 6 exam entries.

I have no more ideas concerning this. Perhaps there is someone out who
can give me some hints or debugging ideas.
Thanks all.

Anja




More information about the hibernate-users mailing list