Only a quick check, but:
2008/4/24 <boliver(a)lvlomas.com>:
I have a very simple DB structure that I can't seem to get going here with
Hibernate.
The relationship between two tables is quite simple.
Table: Team - contains the following
pkid - int
name - varchar
divisionpkid - int
Table: Division - contains the following:
pkid - int
name - varchar
A team can belong to a division, and division can have many teams. What I
want is to get all the teams from the database, and have a reference in
each team to it's division.
My hibernate hbm file looks like this:
<class name="database.HldivisionEntity" table="hldivision"
catalog="Twisters2008">
<id name="pkid">
<column name="pkid" sql-type="int"
length="11" precision="0"
not-null="true"/>
</id>
<property name="name">
<column name="name" sql-type="varchar"
length="20"
precision="0" not-null="false"/>
</property>
</class>
<class name="database.TeamEntity" table="team"
catalog="Twisters2008">
<id name="pkid">
<column name="pkid" sql-type="int"
length="11" precision="0"
not-null="true"/>
</id>
<property name="name">
<column name="name" sql-type="varchar"
length="20"
precision="0" not-null="false"/>
</property>
<property name="hldivisionpkid">
<column name="hldivisionpkid" sql-type="int"
length="11"
precision="0" not-null="false"/>
</property>
From memory: I believe this should not be a regular property but
contained in the relationship definition. Also, you do not want to
define the id as property but a member of type Division. Please see
the docs for more detail.
<one-to-one name="division"
class="database.HldivisionEntity"/>
This needs to be many-to-one IIRC.
</class>
In my code, when I execute this:
List teamList = session.createQuery("from TeamEntity" ).list();
I get a List returned of the two team records in my Team table, and the
hldivisionpkid fields are set correctly, the the division object is null.
So I must be doing something wrong here. Have I missed something in my
configuration to make this relationship work correctly?
Btw, I'd rather use annotations if you can in your environment.
Kind regards
robert