Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / Databases / March 2008

Tip: Looking for answers? Try searching our database.

Need some in Hibernate

Thread view: 
RC - 26 Mar 2008 14:37 GMT
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>
RC - 26 Mar 2008 14:39 GMT
I meant "Need some help"
Lew - 26 Mar 2008 14:50 GMT
> Hello there,
>
[quoted text clipped - 14 lines]
> 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-decl
aration-id
>

If it's a multi-column key, you'd need
<http://www.hibernate.org/hib_docs/v3/reference/en/html/mapping.html#mapping-decl
aration-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.

Signature

Lew



Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.