title: Can not remove entity Many to One Ralationship
body: <p>My application has 3 entity: Author, Book, Review. Relationship between Book and Review is One to Many. When i want to remove Review everything go okay without exceptions but from DB row is not removing. </p>
  
  <p>I think hibernate can keep review from book size in reviews and does not let remove from DB. If this is true how can i solve this issue?</p>
  
  <p>Or maybe root problem in another place? Need help:)  </p>
  
  <p>Book entity:</p>
  
  <pre><code>@Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  @Column(name = "bookId", unique = true, nullable = false)
  private Integer bookId;
  
  @Size(min = 4, max = 50)
  @Column(name = "name")
  private String name;
  
  @Column(name = "yearPublished")
  private Integer yearPublished;
  
  @Column(name = "description")
  private String description;
  
  @Pattern(regexp = "^([0-9]{3})([-])([0-9]{1})([-])([0-9]{4})([-])([0-9]{4})([-])([0-9]{1})", message = "Not valid isbn, XXX-X-XXXX-XXXX-X")
  @Column(name = "isbn", unique = true)
  private String isbn;
  
  @Size(min = 4, max = 50)
  @Column(name = "publisher")
  private String publisher;
  
  @Column(name = "createDate")
  private Date createDate;
  
  @Enumerated(EnumType.STRING)
  @Column(name = "status")
  private Status status;
  
  @Column(name = "averageRating")
  private Double averageRating;
  
  @ManyToMany(fetch = FetchType.EAGER)
  @JoinTable(name = "booksAuthor", joinColumns = { @JoinColumn(name = "bookId") }, inverseJoinColumns = {
          @JoinColumn(name = "authorId") })
  private List&lt;Author&gt; authors = new ArrayList&lt;Author&gt;();
  
  @OneToMany(mappedBy = "book", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
  private List&lt;Review&gt; reviews;
  </code></pre>
  
  <p>Review entity:</p>
  
  <pre><code>@Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  @Column(name = "reviewId", unique = true, nullable = false)
  private Integer reviewId;
  
  @NotNull
  @Size(min = 4, max = 15)
  @Column(name = "commenterName", nullable = false)
  private String commenterName;
  
  @Size(min = 1, max = 255)
  @Column(name = "comment")
  private String comment;
  
  @Column(name = "rating")
  private Integer rating;
  
  @Column(name = "createDate")
  private Date createDate;
  
  @Column(name = "modified")
  private boolean modified;
  
  @Column(name = "updatedDay")
  private Date updatedDay;
  
  @ManyToOne
  @JoinColumn(name = "bookId")
  private Book book;
  </code></pre>
  
  <p>My persistance.xml:</p>
  
  <pre><code>&lt;persistence version="2.1"
  xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"&gt;
  &lt;persistence-unit name="persistence" transaction-type="JTA"&gt;
  
      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/provider&gt;
  
      &lt;jta-data-source&gt;java:/mysql&lt;/jta-data-source&gt;
  
      &lt;class&gt;com.softserve.model.Author&lt;/class&gt;
      &lt;class&gt;com.softserve.model.Book&lt;/class&gt;
      &lt;class&gt;com.softserve.model.Review&lt;/class&gt;
  
      &lt;properties&gt;
          &lt;property name="hibernate.show_sql" value="true" /&gt; 
          &lt;property name="format_sql" value="true" /&gt;
          &lt;property name="use_sql_comments" value="true" /&gt;
          &lt;property name="hibernate.hbm2ddl.auto" value="update"/&gt;        
      &lt;/properties&gt;
  &lt;/persistence-unit&gt;
  </code></pre>
  
  <p></p>
  
  <p>My GenericDAO:</p>
  
  <pre><code>@Stateless
  </code></pre>
  
  <p>public class AbstractGenericDAOImpl implements GenericDAO {</p>
  
  <pre><code>private static final Logger LOGGER = LoggerFactory.getLogger(AbstractGenericDAOImpl.class);
  
  @PersistenceContext(unitName = "persistence", type = PersistenceContextType.TRANSACTION)
  protected EntityManager em;
  
  protected Class&lt;E&gt; entityClass;
  
  public AbstractGenericDAOImpl() {
  }
  
  public AbstractGenericDAOImpl(Class&lt;E&gt; entityClass) {
      this.entityClass = entityClass;
  }
  
  public void create(E entity) {
      try {
          LOGGER.info("void create{}({})", entityClass, entity);
          em.persist(entity);
      } catch (Exception e) {
          LOGGER.error("Exception: {}", e);
      }
  }
  
  public E readById(I id) {
      LOGGER.info(entityClass.getCanonicalName() + " readbyPk({})", id);
      E entity = (E) em.find(entityClass, id);
      return entity;
  
  }
  
  public void update(E entity) {
      try {
          LOGGER.info("void update{}({})", entityClass, entity);
          em.merge(entity);
      } catch (Exception e) {
          LOGGER.error("Exception: {}", e);
      }
  }
  
  public void removeByPk(I id) {
      try {
          LOGGER.info("remove {} by pk {}", entityClass, id);
          E e = em.find(entityClass, id);
          em.remove(e);
      } catch (Exception e) {
          LOGGER.error("Exception: {}", e);
      }
  }
  </code></pre>
  
  <p>}</p>
  
  <p>Remove Books or Authors works good! Only can not remove Review</p>