-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: Error in Mapping........HELP ME... New to Hibernate
PostPosted: Thu Oct 04, 2012 1:01 am 
Newbie

Joined: Thu Oct 04, 2012 12:34 am
Posts: 1
Hello,

I am new to Hibernate. I am developing a very simple Java Hibernate Application. Below are my configurations of laptop:
    1. Windows 7 64 bit
    2. JDK 6
    3. Eclipse Indigo
    4. Hibernate 3.6.10
    5. Oracle 11g Database

I have developed 3 tables in Oracle 11g Database named: USERDETAILS, VEHICLE AND ADDRESS.
Userdetails: userid, username
Vehicle: vehicleid, vehiclename, userid
Address: userid, street, city, state, country, pincode
i have 2 sequences named USERDETAILS_seq and VEHICLE_sed for primary key generation userid(userdetails) and vehicleid(vehicle)

ER Diagram
Image

My logic is Userdetails can have many different vehicles and also per user one address is there. Below are the details


I have developed 3 entity classes as below:
UserDetails.java
Code:
package org.dto;

import java.util.Set;

public class UserDetails {
   private int userID;
   private String userName;

   //One User can have multiple vehicles. therefore set
   private Set<Vehicle> vehciles;
   
   //one to one mapping between UserDetails and Address
   private Address address;

   public int getUserID() {
      return userID;
   }

   public void setUserID(int userID) {
      this.userID = userID;
   }

   public String getUserName() {
      return userName;
   }

   public void setUserName(String userName) {
      this.userName = userName;
   }

   public Set<Vehicle> getVehciles() {
      return vehciles;
   }

   public void setVehciles(Set<Vehicle> vehciles) {
      this.vehciles = vehciles;
   }

   public Address getAddress() {
      return address;
   }

   public void setAddress(Address address) {
      this.address = address;
   }

}


Vehicle.java
Code:
package org.dto;

public class Vehicle {
   private int vehicleID;
   private String vehicleName;
   
   //Many vehicles can have one User
   private UserDetails user;

   public int getVehicleID() {
      return vehicleID;
   }

   public void setVehicleID(int vehicleID) {
      this.vehicleID = vehicleID;
   }

   public String getVehicleName() {
      return vehicleName;
   }

   public void setVehicleName(String vehicleName) {
      this.vehicleName = vehicleName;
   }

   public UserDetails getUser() {
      return user;
   }

   public void setUser(UserDetails user) {
      this.user = user;
   }

}


Address.java
Code:
package org.dto;

public class Address {
   private int userID;
   private String street;
   private String city;
   private String state;
   private String country;
   private String pincode;

   // One to one between UserDetails and Address
   private UserDetails user;

   public String getStreet() {
      return street;
   }

   public void setStreet(String street) {
      this.street = street;
   }

   public String getCity() {
      return city;
   }

   public void setCity(String city) {
      this.city = city;
   }

   public String getState() {
      return state;
   }

   public void setState(String state) {
      this.state = state;
   }

   public String getCountry() {
      return country;
   }

   public void setCountry(String country) {
      this.country = country;
   }

   public String getPincode() {
      return pincode;
   }

   public void setPincode(String pincode) {
      this.pincode = pincode;
   }

   public UserDetails getUser() {
      return user;
   }

   public void setUser(UserDetails user) {
      this.user = user;
   }

   public int getUserID() {
      return userID;
   }

   public void setUserID(int userID) {
      this.userID = userID;
   }

}


hibernate.cfg.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                                         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
   <session-factory>
      <property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property>
      <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
      <property name="hibernate.connection.username">gaurav</property>
      <property name="hibernate.connection.password">tiger</property>
      <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
      <property name="hibernate.show_sql">true</property>
      <property name="hibernate.hbm2ddl.auto">vaildate</property>
      <mapping resource="org/dto/mappings.hbm.xml" />
   </session-factory>
</hibernate-configuration>


mappings.hbm.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                           "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
   <!-- UserDetails -->
   <class name="org.dto.UserDetails" table="USERDETAILS">
      <id name="userID" column="USERID">
         <generator class="sequence">
            <param name="sequence">USERDETAILS_SEQ</param>
         </generator>
      </id>
      <property name="userName" column="USERNAME" />
      <set name="vehicles" table="VEHICLE" inverse="true" lazy="true"
         fetch="select">
         <key>
            <column name="VEHICLEID" not-null="true" />
         </key>
         <one-to-many  class="
               org.dto.Vehicle " />
      </set>
      <one-to-one name="address" class="org.dto.Address" cascade="save-update" />
   </class>

   <!-- Address -->
   <class name="org.dto.Address" table="ADDRESS">
      <id name="userID" column="USERID">
         <generator class="foreign">
            <param name="property">user</param>
         </generator>
      </id>
      <property name="street" column="STREET" />
      <property name="city" column="CITY" />
      <property name="state" column="STATE" />
      <property name="country" column="COUNTRY" />
      <property name="pincode" column="PINCODE" />
      <one-to-one name="user" class="org.dto.UserDetails"
         constrained="true" />
   </class>

   <!-- Vehicle -->
   <class name="org.dto.Vehicle" table="VEHICLE">
      <id name="vehicleID" column="VEHICLEID">
         <generator class="sequence">
            <param name="sequence">VEHICLE_SEQ</param>
         </generator>
      </id>
      <property name="vehicleName" column="VEHICLENAME" />
      <many-to-one name="user" class="org.dto.UserDetails"
         fetch="select">
         <column name="VEHICLEID" not-null="true" />
      </many-to-one>
   </class>

</hibernate-mapping>


HibernateInsert.java----------to insert records
Code:
package org.dto.hibernate;

import org.dto.Address;
import org.dto.UserDetails;
import org.dto.Vehicle;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateInsert {

   public static void main(String[] args) {
      UserDetails user1 = new UserDetails();
      user1.setUserName("Gaurav");
      
      Address address1 = new Address();
      address1.setStreet("3/602, Sarvodaya Garden");
      address1.setCity("Dombivli");
      address1.setState("Maharashtra");
      address1.setCountry("India");
      address1.setPincode("421201");
      
      Vehicle vehicle1 = new Vehicle();
      vehicle1.setVehicleName("BMW");
      
      vehicle1.setUser(user1);
      user1.setAddress(address1);
      address1.setUser(user1);
      
      SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
      Session session = sessionFactory.openSession();
      session.beginTransaction();
      session.save(address1);
      session.save(vehicle1);
      session.save(user1);
      session.getTransaction().commit();
   }

}


But after running the application i am getting below error
Exception in thread "main" org.hibernate.MappingException: Association references unmapped class: org.dto.Vehicle
at org.hibernate.cfg.HbmBinder.bindCollectionSecondPass(HbmBinder.java:2503)
at org.hibernate.cfg.HbmBinder$CollectionSecondPass.secondPass(HbmBinder.java:2782)
at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:65)
at org.hibernate.cfg.Configuration.originalSecondPassCompile(Configuration.java:1716)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1423)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1856)
at org.dto.hibernate.HibernateInsert.main(HibernateInsert.java:30)


Please help me out with this. What exactly needs to be done?


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.