title: Hibernate not inserting rows
body: <p>I able to generate the schema but when I try to insert, nothing seems to be happening. It won't print anything in the logs either. My Phone table primary key is a composite key consisting of phoneNumber and foreign key id.</p>
  
  <p>I have my classes as below</p>
  
  <p><strong>Student.java</strong></p>
  
  <pre><code>import java.io.Serializable;
  import java.util.Set;
  import javax.persistence.CascadeType;
  import javax.persistence.Entity;
  import javax.persistence.GeneratedValue;
  import javax.persistence.GenerationType;
  import javax.persistence.Id;
  import javax.persistence.JoinColumn;
  import javax.persistence.OneToMany;
  
  @Entity
  @SuppressWarnings("serial")
  public class Student implements Serializable {
  
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private int id;
  
  private String fName;
  
  private String lName;
  
  private String mname;
  
  @OneToMany(cascade = CascadeType.ALL)
  @JoinColumn(name = "id")
  private Set&lt;Phone&gt; phones;
  
  /**
   * @return the fName
   */
  public String getfName() {
      return fName;
  }
  
  /**
   * @return the id
   */
  public int getId() {
      return id;
  }
  
  /**
   * @return the lName
   */
  public String getlName() {
      return lName;
  }
  
  /**
   * @return the mname
   */
  public String getMname() {
      return mname;
  }
  
  /**
   * @return the phones
   */
  public Set&lt;Phone&gt; getPhones() {
      return phones;
  }
  
  /**
   * @param fName
   *            the fName to set
   */
  public void setfName(final String fName) {
      this.fName = fName;
  }
  
  /**
   * @param id
   *            the id to set
   */
  public void setId(final int id) {
      this.id = id;
  }
  
  /**
   * @param lName
   *            the lName to set
   */
  public void setlName(final String lName) {
      this.lName = lName;
  }
  
  /**
   * @param mname
   *            the mname to set
   */
  public void setMname(final String mname) {
      this.mname = mname;
  }
  
  /**
   * @param phones
   *            the phones to set
   */
  public void setPhones(final Set&lt;Phone&gt; phones) {
      this.phones = phones;
  }
  
  }
  </code></pre>
  
  <p><strong>Phone.java</strong></p>
  
  <pre><code>import java.io.Serializable;
  
  import javax.persistence.Entity;
  import javax.persistence.GeneratedValue;
  import javax.persistence.GenerationType;
  import javax.persistence.Id;
  import javax.persistence.IdClass;
  import javax.persistence.JoinColumn;
  import javax.persistence.ManyToOne;
  
  @IdClass(PhonePK.class)
  @Entity
  @SuppressWarnings("serial")
  public class Phone implements Serializable {
  
  @Id
  private String phoneNumber;
  
  @Id
  @ManyToOne
  @JoinColumn(name = "id", insertable = false, updatable = false)
  private Student student;
  
  private String color;
  
  /**
   * @return the color
   */
  public String getColor() {
      return color;
  }
  
  /**
   * @return the phoneNumber
   */
  public String getPhoneNumber() {
      return phoneNumber;
  }
  
  /**
   * @return the student
   */
  public Student getStudent() {
      return student;
  }
  
  /**
   * @param color
   *            the color to set
   */
  public void setColor(final String color) {
      this.color = color;
  }
  
  /**
   * @param phoneNumber
   *            the phoneNumber to set
   */
  public void setPhoneNumber(final String phoneNumber) {
      this.phoneNumber = phoneNumber;
  }
  
  /**
   * @param student
   *            the student to set
   */
  public void setStudent(final Student student) {
      this.student = student;
  }
  
  }
  </code></pre>
  
  <p><strong>PhonePK.java</strong></p>
  
  <pre><code>import java.io.Serializable;
  
  @SuppressWarnings("serial")
  public class PhonePK implements Serializable {
  
  private String phoneNumber;
  
  private Student student;
  
  /**
   * @return the phoneNumber
   */
  public String getPhoneNumber() {
      return phoneNumber;
  }
  
  /**
   * @return the student
   */
  public Student getStudent() {
      return student;
  }
  
  /**
   * @param phoneNumber
   *            the phoneNumber to set
   */
  public void setPhoneNumber(final String phoneNumber) {
      this.phoneNumber = phoneNumber;
  }
  
  /**
   * @param student
   *            the student to set
   */
  public void setStudent(final Student student) {
      this.student = student;
  }
  
  }
  </code></pre>
  
  <p><strong>hibernate.cfg.xml:</strong></p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;!DOCTYPE hibernate-configuration PUBLIC
  "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"&gt;
  &lt;hibernate-configuration&gt;
  &lt;session-factory&gt;
  &lt;property name="hibernate.connection.driver_class"&gt;com.mysql.jdbc.Driver&lt;/property&gt;
  &lt;property name="hibernate.connection.password"&gt;pwd&lt;/property&gt;
  &lt;property name="hibernate.connection.url"&gt;jdbc:mysql://localhost:3306/test&lt;/property&gt;
  &lt;property name="hibernate.connection.username"&gt;user&lt;/property&gt;
  &lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.MySQLDialect&lt;/property&gt;
  &lt;property name="connection.pool_size"&gt;1&lt;/property&gt;
  &lt;property name="show_sql"&gt;true&lt;/property&gt;
  &lt;property name="hbm2ddl.auto"&gt;create&lt;/property&gt;
  &lt;property name="hibernate.show_sql"&gt;true&lt;/property&gt;
  
  &lt;/session-factory&gt;
  &lt;/hibernate-configuration&gt;
  </code></pre>
  
  <p><strong>Main.java</strong></p>
  
  <pre><code>import static org.junit.Assert.assertTrue;
  
  import java.util.LinkedHashSet;
  import java.util.Set;
  
  import org.hibernate.Session;
  import org.hibernate.SessionFactory;
  import org.hibernate.cfg.Configuration;
  
  public class Main {
  
     public static void main(final String args[]) {
      Configuration configuration = new Configuration();
  
      configuration.addAnnotatedClass(Student.class);
      configuration.addAnnotatedClass(Phone.class);
      configuration.addAnnotatedClass(PhonePK.class);
      configuration.configure("hibernate.cfg.xml");
  
      SessionFactory sessionFactory = configuration.buildSessionFactory();
  
      Session session = sessionFactory.openSession();
  
      Student student = new Student();
      student.setfName("Bob");
      student.setlName("Buster");
      Set&lt;Phone&gt; phones = new LinkedHashSet&lt;Phone&gt;();
      Phone ph1 = new Phone();
      ph1.setColor("Black");
      ph1.setPhoneNumber("1111111111");
  
      Phone ph2 = new Phone();
      ph2.setColor("Blue");
      ph2.setPhoneNumber("2222222222");
      phones.add(ph1);
      phones.add(ph2);
  
      student.setPhones(phones);
      session.save(student);
   }
  }
  </code></pre>
  
  <p><strong>console output:</strong></p>
  
  <pre><code>Jun 29, 2013 10:47:42 AM org.hibernate.annotations.common.Version &lt;clinit&gt;
  INFO: HCANN000001: Hibernate Commons Annotations {4.0.2.Final}
  Jun 29, 2013 10:47:42 AM org.hibernate.Version logVersion
  INFO: HHH000412: Hibernate Core {4.2.2.Final}
  Jun 29, 2013 10:47:42 AM org.hibernate.cfg.Environment &lt;clinit&gt;
  INFO: HHH000206: hibernate.properties not found
  Jun 29, 2013 10:47:42 AM org.hibernate.cfg.Environment buildBytecodeProvider
  INFO: HHH000021: Bytecode provider name : javassist
  Jun 29, 2013 10:47:42 AM org.hibernate.cfg.Configuration configure
  INFO: HHH000043: Configuring from resource: hibernate.cfg.xml
  Jun 29, 2013 10:47:42 AM org.hibernate.cfg.Configuration getConfigurationInputStream
  INFO: HHH000040: Configuration resource: hibernate.cfg.xml
  Jun 29, 2013 10:47:42 AM org.hibernate.internal.util.xml.DTDEntityResolver     
  resolveEntity
  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!
  Jun 29, 2013 10:47:42 AM org.hibernate.cfg.Configuration doConfigure
  INFO: HHH000041: Configured SessionFactory: null
  Jun 29, 2013 10:47:42 AM   
  org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl    
  configure
  INFO: HHH000402: Using Hibernate built-in connection pool (not for production use!)
  Jun 29, 2013 10:47:42 AM   
  org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl    
  configure
  INFO: HHH000115: Hibernate connection pool size: 1
  Jun 29, 2013 10:47:42 AM   
  org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl   
   configure
  INFO: HHH000006: Autocommit mode: false
  Jun 29, 2013 10:47:42 AM   
   org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl  
  configure
  INFO: HHH000401: using driver [com.mysql.jdbc.Driver] at URL   
  [jdbc:mysql://localhost:3306/test]
  Jun 29, 2013 10:47:42 AM   
  org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl   
  configure
  INFO: HHH000046: Connection properties: {user=user, password=****}
  Jun 29, 2013 10:47:43 AM org.hibernate.dialect.Dialect &lt;init&gt;
  INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
  Jun 29, 2013 10:47:44 AM org.hibernate.mapping.RootClass checkCompositeIdentifier
  WARN: HHH000038: Composite-id class does not override equals(): PhonePK
  Jun 29, 2013 10:47:44 AM org.hibernate.mapping.RootClass checkCompositeIdentifier
  WARN: HHH000039: Composite-id class does not override hashCode(): PhonePK
  
  Jun 29, 2013 10:47:44 AM   
  org.hibernate.engine.transaction.internal.TransactionFactoryInitiator initiateService
  INFO: HHH000399: Using default transaction strategy (direct JDBC transactions)
  Jun 29, 2013 10:47:44 AM org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory   
  &lt;init&gt;
  INFO: HHH000397: Using ASTQueryTranslatorFactory
  Jun 29, 2013 10:47:44 AM org.hibernate.tool.hbm2ddl.SchemaExport execute
  INFO: HHH000227: Running hbm2ddl schema export
  Hibernate: alter table Phone drop foreign key FK_aoj0eivd0ap3drxnoyk4xj10q
  Hibernate: drop table if exists Phone
  Hibernate: drop table if exists Student
  Hibernate: create table Phone (phoneNumber varchar(255) not null, color varchar(255),    
  id integer not null, primary key (phoneNumber, id))
  Hibernate: create table Student (id integer not null auto_increment, fName     
  varchar(255), lName varchar(255), mname varchar(255), primary key (id))
  Hibernate: alter table Phone add index FK_aoj0eivd0ap3drxnoyk4xj10q (id), add    
  constraint FK_aoj0eivd0ap3drxnoyk4xj10q foreign key (id) references Student (id)
  Jun 29, 2013 10:47:45 AM org.hibernate.tool.hbm2ddl.SchemaExport execute
  INFO: HHH000230: Schema export complete
  Hibernate: insert into Student (fName, lName, mname) values (?, ?, ?)
  Hibernate: select phone_.phoneNumber, phone_.id, phone_.color as color2_0_ from Phone     
  phone_ where phone_.phoneNumber=? and phone_.id=?
  Hibernate: select phone_.phoneNumber, phone_.id, phone_.color as color2_0_ from Phone             
  phone_ where phone_.phoneNumber=? and phone_.id=?
  </code></pre>