title: Hibernate does perform an update rather than a delete operation when a child entity gets removed
body: <p>I have two entites, the parent (item) which has a list of history entities, when I remove a old row from the child list (histories) <code>item.getHistories().remove(0)</code> I would expect that hibernate performs a <strong>delete</strong> operation on the child row, but hibernate updates the foreign key to <code>null</code>.
  This update causes a <strong>NOT NULL VIOLATION</strong> hence the foreign key has a <code>NOT NULL</code> constraint.</p>
  
  <p>This is my parent entity:</p>
  
  <pre><code>@Data
  @EqualsAndHashCode(callSuper = true)
  @Entity
  @Table(name = "item", schema = "public", catalog = "foo")
  public class RepricingItem extends BaseDatesEntity {
  
      @Id
      @SequenceGenerator(name="item_id_seq", sequenceName = "item_id_seq", allocationSize = 5)
      @GeneratedValue(strategy = SEQUENCE, generator = "item_id_seq")
      @Column(name = "id", unique = true, insertable = true, updatable = false, nullable = false)
      protected Long id;
  
      @Size(min = 1, max = 100)
      @Column(name = "title", nullable = false, insertable = true, updatable = true)
      private String title;
  
      @OneToMany(fetch = LAZY, cascade = ALL, orphanRemoval = true)
      @JoinColumn(name = "item_id")
      private List&lt;ItemHistory&gt; histories;
  }
  </code></pre>
  
  <p>And this is the child:</p>
  
  <pre><code>@Data
  @EqualsAndHashCode(callSuper=true)
  @Entity
  @Table(name = "item_history", schema = "public", catalog = "foo")
  public class RepricingItemBuyBoxHistory extends BaseEntity {
  
      @ManyToOne(fetch = LAZY, optional = false)
      @JoinColumn(name = "item_id", nullable = false, updatable = false)
      private RepricingItem repricingItem;
  
      @Size(min = 1, max = 255)
      @Column(name = "some_history_data", nullable = false, insertable = true, updatable = false)
      private String someHistoryData;
  }
  </code></pre>
  
  <p>This is the history table with the not null constraint:</p>
  
  <pre><code>CREATE TABLE "item_history" (
      id                BIGSERIAL PRIMARY KEY,
      item_id           BIGINT                      NOT NULL REFERENCES "item" (id) ON DELETE CASCADE,
      inserted          TIMESTAMP WITHOUT TIME ZONE,
      updated           TIMESTAMP WITHOUT TIME ZONE,
      some_history_data VARCHAR(255)                NOT NULL
  ) WITH (OIDS =FALSE);
  </code></pre>
  
  <p>This is the update clause generated by hibernate:</p>
  
  <pre><code>11:17:00,794 WARN  [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] SQL Error: 0, SQLState: 23502
  11:17:00,794 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] Batch entry 0 update foo.public.item_history set item_id=null where item_id=903372 and id=245 was aborted.  Call getNextException to see the cause.
  </code></pre>
  
  <p>How can I tell hibernate to delete the child rather than trying to remove the relation.</p>