title: ids for this class must be manually assigned before calling save(): com.javaknowledge.entity.Motor
body: <p>I want to make a one to many mapping in hibernate. I have followed some tutorial but still get error in id, actually "id" in my project is  "STRING"
  Below is my code</p>
  
  <p>Motor.java</p>
  
  <pre><code>package com.javaknowledge.entity;
  import java.text.ParseException;
  import java.text.SimpleDateFormat;
  import java.util.ArrayList;
  import java.util.Date;
  import java.util.List;
  import javax.faces.bean.ManagedBean;
  import javax.faces.bean.SessionScoped;
  import org.primefaces.model.UploadedFile;
  import java.sql.Blob;
  import java.util.HashSet;
  import java.util.Set;
  import javax.persistence.Column;
  import javax.persistence.Id;
  /**
   *
   * @author VENNY
  */
  @ManagedBean
  @SessionScoped
  
  public class Motor implements java.io.Serializable{
      @Id
      private String VFRAMENUM;    
      private Customer customer;
      private String VENGINENUM;
      private String VNOPOL;
      private String VTYPECODE;
      private String VCLRCODE;
      private int VTHNPROD;
      private int NKMSERVICE;
  
  
      public Motor(){
  
      }
  
      public Customer getCustomer() {
          return customer;
      }
      public void setCustomer(Customer customer) {
          this.customer = customer;
      }
  //setter getter        
  }
  </code></pre>
  
  <p>Customer.java</p>
  
  <pre><code>package com.javaknowledge.entity;
  /**
   *
   * @author VENNY
  */
  @ManagedBean
  @SessionScoped
  public class Customer implements java.io.Serializable {
      @Id
      private String VIDPROSPEK;
      private String VNAME;
      private String VADRESS;   
      private String NPHONENUM;
      private String hubunganPM;
      private String sd, msg, selectedVCLRDESC;
  
      private Set motors = new HashSet(0);
  
      public Customer() {
  
      }
  
      public Customer(String VIDPROSPEK, String VNAME, String VADRESS, String NPHONENUM, String hubunganPM) {
          this.VIDPROSPEK = VIDPROSPEK;
          this.VNAME = VNAME;
          this.VADRESS = VADRESS;        
          this.NPHONENUM = NPHONENUM;
          this.hubunganPM = hubunganPM;
      }
  
      public Set getMotors() {
          return motors;
      }
  
      public void setMotors(Set motors) {
          this.motors = motors;
      }
  //setter getter
  }
  </code></pre>
  
  <p>CustomerDao.java</p>
  
  <pre><code>public class CustomerDao {
  
      public void addCustomer(Customer cust) {
          Transaction trns = null;
          Session session = HibernateUtil.getSessionFactory().openSession();
          try {
              trns = session.beginTransaction();
              cust.getVIDPROSPEK();
              cust.getNPHONENUM();
              cust.getVADRESS();
              cust.getVNAME();
              cust.getHubunganPM();
              session.save(cust);
  
              Motor motid = new Motor();
              motid.getVFRAMENUM();
              motid.getVENGINENUM();
              motid.getVNOPOL();
              motid.getVTYPECODE();
              motid.getVTHNPROD();
              motid.getNKMSERVICE();
  
              motid.setCustomer(cust);
              cust.getMotors().add(motid);
              session.save(motid);
              session.getTransaction().commit();
          } catch (RuntimeException e) {
              if (trns != null) {
                  trns.rollback();
              }
              e.printStackTrace();
          } finally {
              session.flush();
              session.close();
          }
      }
  }
  </code></pre>
  
  <p>Customer.hbm.xml</p>
  
  <pre><code>&lt;?xml version="1.0"?&gt;
  &lt;!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"&gt;
  &lt;!-- Generated Jul 5, 2013 10:57:32 AM by Hibernate Tools 3.2.1.GA --&gt;
  &lt;hibernate-mapping&gt;
      &lt;class name="com.javaknowledge.entity.Customer" table="ahmdsmun_mstprospek" catalog="ahmids"&gt;
          &lt;id name="VIDPROSPEK" type="string"&gt;
              &lt;column name="VIDPROSPEK" /&gt;
              &lt;generator class="assigned"&gt;&lt;/generator&gt;
          &lt;/id&gt;
          &lt;property name="VNAME" type="string"&gt;
              &lt;column name="VNAME" length="100" not-null="true" /&gt;
          &lt;/property&gt;
          &lt;property name="VADRESS" type="string"&gt;
              &lt;column name="VADRESS" length="100" not-null="true" /&gt;
          &lt;/property&gt;
          &lt;property name="NPHONENUM" type="string"&gt;
              &lt;column name="NPHONENUM" length="15" /&gt;
          &lt;/property&gt;
          &lt;property name="hubunganPM" type="string"&gt;
              &lt;column name="hubunganPM" length="4"/&gt;
          &lt;/property&gt;
          &lt;set name="motors" table="ahmdsmts_mstmotor" 
                  inverse="true" lazy="true" fetch="select"&gt;
              &lt;key&gt;
                  &lt;column name="VIDCUSTOMER" not-null="true" /&gt;
              &lt;/key&gt;
              &lt;one-to-many class="com.javaknowledge.entity.Motor" /&gt;
          &lt;/set&gt;
      &lt;/class&gt;
  &lt;/hibernate-mapping&gt;
  </code></pre>
  
  <p>Motor.hbm.xml</p>
  
  <pre><code>&lt;?xml version="1.0"?&gt;
  &lt;!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"&gt;
  &lt;!-- Generated Jul 5, 2013 10:57:32 AM by Hibernate Tools 3.2.1.GA --&gt;
  &lt;hibernate-mapping&gt;
      &lt;class name="com.javaknowledge.entity.Motor" table="ahmdsmts_mstmotor" catalog="ahmids"&gt;
          &lt;id name="VFRAMENUM" type="string"&gt;
              &lt;column name="VFRAMENUM" /&gt;
              &lt;generator class="assigned"&gt;&lt;/generator&gt;
          &lt;/id&gt;
          &lt;many-to-one name="customer" class="com.javaknowledge.entity.Customer" fetch="select"&gt;
              &lt;column name="VIDPROSPEK" not-null="true" /&gt;
          &lt;/many-to-one&gt;
          &lt;property name="VENGINENUM" type="string"&gt;
              &lt;column name="VENGINENUM" length="100" not-null="true" /&gt;
          &lt;/property&gt;
          &lt;property name="VNOPOL" type="string"&gt;
              &lt;column name="VNOPOL" length="100" not-null="true" /&gt;
          &lt;/property&gt;
          &lt;property name="VTYPECODE" type="string"&gt;
              &lt;column name="VTYPECODE" length="15" /&gt;
          &lt;/property&gt;
          &lt;property name="VCLRCODE" type="string"&gt;
              &lt;column name="VCLRCODE" length="4"/&gt;
          &lt;/property&gt;
          &lt;property name="VTHNPROD" type="int"&gt;
              &lt;column name="VTHNPROD" length="100" /&gt;
          &lt;/property&gt; 
          &lt;property name="NKMSERVICE" type="int"&gt;
              &lt;column name="NKMSERVICE" length="100" /&gt;
          &lt;/property&gt;
  
      &lt;/class&gt;
  &lt;/hibernate-mapping&gt;
  </code></pre>
  
  <p>I think thats all needed to know. Am I doing something wrong in my .hbm.xml ?</p>
  
  <p>note:
  - In table for customer, VIDPROSPEK(String) is PK
  - In table for motor, VFRAMENUM(String) is PK  and VIDCUSTOMER is FK with VIDPROSPEK</p>
  
  <p>Here is the stacktrace:</p>
  
  <pre><code>Info:   WebApplication1_1_test was successfully deployed in 4,056 milliseconds.
  Info:   WebModule[null] ServletContext.log():Destroying Spring FrameworkServlet 'dispatcher'
  Info:   Closing WebApplicationContext for namespace 'dispatcher-servlet': startup date [Wed Aug 05 09:12:11 SGT 2015]; parent: Root WebApplicationContext
  Info:   WebModule[null] ServletContext.log():Closing Spring root WebApplicationContext
  Info:   Closing Root WebApplicationContext: startup date [Wed Aug 05 09:12:10 SGT 2015]; root of context hierarchy
  Warning:   The web application [/saveDatabaseTabCustomer_retrieveTabServicePart] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   visiting unvisited references
  Info:   WebModule[null] ServletContext.log():No Spring WebApplicationInitializer types detected on classpath
  Info:   Registering WebSocket filter for url pattern /*
  Info:   Initializing Mojarra 2.2.7 ( 20140610-1547 https://svn.java.net/svn/mojarra~svn/tags/2.2.7@13362) for context '/saveDatabaseTabCustomer_retrieveTabServicePart'
  Info:   Monitoring jndi:/server/saveDatabaseTabCustomer_retrieveTabServicePart/WEB-INF/faces-config.xml for modifications
  Info:   Running on PrimeFaces 3.5
  Info:   WebModule[null] ServletContext.log():Initializing Spring root WebApplicationContext
  Info:   Root WebApplicationContext: initialization started
  Info:   Refreshing Root WebApplicationContext: startup date [Wed Aug 05 09:26:26 SGT 2015]; root of context hierarchy
  Info:   Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext.xml]
  Info:   Loaded JDBC driver: com.mysql.jdbc.Driver
  Info:   Root WebApplicationContext: initialization completed in 466 ms
  Info:   WebModule[null] ServletContext.log():Initializing Spring FrameworkServlet 'dispatcher'
  Info:   FrameworkServlet 'dispatcher': initialization started
  Info:   Refreshing WebApplicationContext for namespace 'dispatcher-servlet': startup date [Wed Aug 05 09:26:26 SGT 2015]; parent: Root WebApplicationContext
  Info:   Loading XML bean definitions from ServletContext resource [/WEB-INF/dispatcher-servlet.xml]
  Info:   Mapped URL path [/index.htm] onto handler 'indexController'
  Info:   FrameworkServlet 'dispatcher': initialization completed in 205 ms
  Info:   Loading application [WebApplication1_1_test] at [/saveDatabaseTabCustomer_retrieveTabServicePart]
  Info:   WebApplication1_1_test was successfully deployed in 3,132 milliseconds.
  Info:   HCANN000001: Hibernate Commons Annotations {4.0.4.Final}
  Info:   HHH000412: Hibernate Core {4.3.1.Final}
  Info:   HHH000206: hibernate.properties not found
  Info:   HHH000021: Bytecode provider name : javassist
  Info:   HHH000043: Configuring from resource: /hibernate.cfg.xml
  Info:   HHH000040: Configuration resource: /hibernate.cfg.xml
  WARN:   HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
  Info:   HHH000221: Reading mappings from resource: com/javaknowledge/entity/Customer.hbm.xml
  WARN:   HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
  Info:   HHH000221: Reading mappings from resource: com/javaknowledge/entity/TipeMotor.hbm.xml
  WARN:   HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
  Info:   HHH000221: Reading mappings from resource: com/javaknowledge/entity/Service.hbm.xml
  WARN:   HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
  Info:   HHH000221: Reading mappings from resource: com/javaknowledge/entity/Motor.hbm.xml
  WARN:   HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
  Info:   HHH000041: Configured SessionFactory: null
  WARN:   HHH000402: Using Hibernate built-in connection pool (not for production use!)
  Info:   HHH000401: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost:3306/ahmids?zeroDateTimeBehavior=convertToNull]
  Info:   HHH000046: Connection properties: {user=root, password=****}
  Info:   HHH000006: Autocommit mode: false
  Info:   HHH000115: Hibernate connection pool size: 20 (min=1)
  Info:   HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
  Info:   HHH000423: Disabling contextual LOB creation as JDBC driver reported JDBC version [3] less than 4
  Info:   HHH000399: Using default transaction strategy (direct JDBC transactions)
  Info:   HHH000397: Using ASTQueryTranslatorFactory
  Severe:   org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): com.javaknowledge.entity.Motor
      at org.hibernate.id.Assigned.generate(Assigned.java:52)
      at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:117)
      at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:209)
      at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55)
      at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:194)
      at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:49)
      at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90)
      at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:711)
      at org.hibernate.internal.SessionImpl.save(SessionImpl.java:703)
      at org.hibernate.internal.SessionImpl.save(SessionImpl.java:698)
      at com.javaknowledge.dao.CustomerDao.addCustomer(CustomerDao.java:42)
      at com.javaknowledge.entity.Customer.saveCustomer(Customer.java:116)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:497)
      at com.sun.el.parser.AstValue.invoke(AstValue.java:289)
      at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304)
      at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
      at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
      at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
      at javax.faces.component.UICommand.broadcast(UICommand.java:315)
      at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
      at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
      at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
      at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
      at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
      at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:344)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
      at org.glassfish.tyrus.servlet.TyrusServletFilter.doFilter(TyrusServletFilter.java:295)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:316)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
      at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
      at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
      at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:415)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282)
      at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
      at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
      at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201)
      at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175)
      at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
      at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
      at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
      at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
      at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
      at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
      at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
      at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561)
      at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
      at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
      at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
      at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
      at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565)
      at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
      at java.lang.Thread.run(Thread.java:745)
  </code></pre>