Need some in Hibernate

R

RC

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!

I try it as below XMl file, but I catch the error when I

try {
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}

Initial SessionFactory creation
failed.org.hibernate.PropertyNotFoundException: Could not find a getter
for state_code in class tables.State

-------------------------------------------------
State.hbm.xml

<hibernate-mapping>
<class name="tables.State" table="STATE">
<id name="state_code" type="string" column="STATE_CODE">
<generator class="native" />
</id>
<property name="state" type="string" column="STATE" />
</class>
</hibernate-mapping>
 
L

Lew

RC said:
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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,981
Messages
2,570,187
Members
46,731
Latest member
MarcyGipso

Latest Threads

Top