Need some in Hibernate

Discussion in 'Java' started by RC, Mar 26, 2008.

  1. RC

    RC Guest

    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, Mar 26, 2008
    #1
    1. Advertising

  2. RC

    RC Guest

    I meant "Need some help"
     
    RC, Mar 26, 2008
    #2
    1. Advertising

  3. RC

    Lew Guest

    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
     
    Lew, Mar 26, 2008
    #3
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Ilias Lazaridis
    Replies:
    0
    Views:
    1,723
    Ilias Lazaridis
    Dec 27, 2004
  2. Replies:
    0
    Views:
    3,718
  3. jstorta
    Replies:
    1
    Views:
    11,764
  4. Eleanna Skouta
    Replies:
    2
    Views:
    8,437
    Arne Vajhøj
    Dec 9, 2008
  5. Amit Jain
    Replies:
    7
    Views:
    3,300
    Amit Jain
    Apr 27, 2009
Loading...

Share This Page