title: Hibernate JoinColumn Error on not null constraint
body: <p>Here's a list of my classes</p>
  
  <pre><code>@MappedSuperclass
  public abstract class JpaModel {
  
      @Id
      @Column(name ="ID", columnDefinition = "serial")
      @GeneratedValue(strategy = GenerationType.IDENTITY)
      private Long id;
  }
  </code></pre>
  
  <p>The Product Entity</p>
  
  <pre><code>@Entity
  @Table(name = "REF_PRODUCT")
  public class Product extends JpaModel{
  
      @Column(name= "NAME")
      private String name;
  
      @Column(name = "MANUFACTURER")
      private String manufacturer;
  
      /**
       * Work around for missing
       */
      @OneToOne(optional = true)
      @JoinColumn(name="id")
      private InventoryItemPicture picture;
  </code></pre>
  
  <p>....
  }</p>
  
  <p>and the inventory item picture entity</p>
  
  <pre><code>@Entity
  @Table(name = "TXN_INVENTORY_PICTURE")
  public class InventoryItemPicture extends JpaModel{
  
      @Column
      private byte[] image;
  
      @Column
      private String fileName;
  </code></pre>
  
  <p>When saving the Product, The inventoryItemPicture is Optional, thus there will be times that it will be of null value, which is something I would want to happen. However upon saving the Product Entity with a null value this error shows up. </p>
  
  <pre><code>Caused by: org.postgresql.util.PSQLException: ERROR: null value in column "id" violates not-null constraint
    Detail: Failing row contains (null, null, test, dsadas, sdas, dsadsa, 500.00, 1000.00, 1500.00, 5, PRODUCT).
      at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2198)
      at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1927)
      at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
      at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:561)
      at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:419)
      at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:365)
      at com.zaxxer.hikari.proxy.PreparedStatementProxy.executeUpdate(PreparedStatementProxy.java:61)
      at com.zaxxer.hikari.proxy.PreparedStatementJavassistProxy.executeUpdate(PreparedStatementJavassistProxy.java)
      at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:208)
      ... 120 more
  </code></pre>