by Lew <lew@[EMAIL PROTECTED]
>
Mar 26, 2008 at 09:50 AM
RC wrote:
> Hello there,
>
> I am new in Hibernate. I look at some examples in Hibernate 3.2
> There is ALWAYS a Long id in a table class, like
>
> public class State {
> private Long id; // no such column in my STATE table in database
> private String state_code; // two-character state code
> private String state_name;
>
> then six pairs of getXXX/setXXX();
> }
>
>
> My question is my existing table in database has NO id column.
> I am NOT allow to altering the existed table.
>
> How do I do the mapping (How do I re-write my XML mapping file)?
> Thank Q very much in advance!
Apply the name attribute of the id tag in the mapping table to whatever
the
primary key actually is. By defining a generator, you are asking
Hibernate to
generate the primary key for you, obviously not in accordance with the
table's
design.
<http://www.hibernate.org/hib_docs/v3/reference/en/html/mapping.html#mapping-declaration-id>
If it's a multi-column key, you'd need
<http://www.hibernate.org/hib_docs/v3/reference/en/html/mapping.html#mapping-declaration-compositeid>
The Hibernate folks suggest:
> There is an alternative <composite-id> declaration to allow access to
> legacy data with composite keys. We strongly discourage its use for
anything else.
I do not get what all this is about "legacy data" and "discourage its
use".
It's quite common and proper for tables to have multi-column keys.
I haven't run across that editorial outlook in JPA articles (Java
Persistence
API), for all that JPA is largely based on Hibernate.
--
Lew