I'm trying to create a simple one-to-one mapping between two tables using Hibernate
2.1.7, but the results are confusing me. What I'm really doing is simply adding a
column to an existing table, but for various business reasons beyond my control, I cannot
modify the existing table, so I've created a separate table to store the additional
column, with the same primary key as the existing table.
My mapping looks something like this (names have been changed to protect the innocent):
| <hibernate-mapping package="com.blah">
| <class name="Foo" table="foo">
| <id name="fooId" type="integer" column="foo_id"
>
| <generator class="assigned"/>
| </id>
|
| <one-to-one name="bar" class="Bar" cascade="all"
/>
|
| <!-- some other columns follow... -->
| </class>
| </hibernate-mapping>
|
| <hibernate-mapping package="com.blah">
| <class name="Bar" table="bar">
| <id name="fooId" type="integer" column="foo_id"
>
| <generator class="foreign">
| <param name="property">foo</param>
| </generator>
| </id>
|
| <one-to-one name="foo" class="Foo"
constrained="true" />
|
| <!-- the extra columns follow... -->
| </class>
| </hibernate-mapping>
|
I never retrieve a Bar instance. I only ever reference the properties of Bar via Foo's
getBar() method. Nevertheless, when I turn on Hibernate's show_sql flag, I get the
following query generated 1710 times for each page access:
| 2007-02-06 10:01:23,125 INFO [STDOUT] Hibernate: select bar0_.foo_id as foo_id1_3_,
foo1_.foo_id as foo1_0_, from bar bar0_ left outer join foo foo1_ on
bar0_.foo_id=foo1_.foo_id where bar0_.foo_id=?
|
I don't know why it's executing that query 1710 times (which is almost, but not
quite, the number of rows in the foo table).
Can anyone see anything wrong with my mapping files? Any idea why the query is starting
with the bar table and left joining to the foo table, especially considering I never call
Bar's getFoo() method (actually, the code I tested that generated the 1710 queries
doesn't even call Foo's getBar() method, it merely retrieves a Foo instance)?
Any help is greatly appreciated.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4012026#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...