JPA Cascading Delete: Setting child FK to NULL on a NOT NULL column

Posted by JBristow on Stack Overflow See other posts from Stack Overflow or by JBristow
Published on 2010-04-22T20:25:47Z Indexed on 2010/04/22 20:53 UTC
Read the original article Hit count: 428

Filed under:
|
|

I have two tables: t_promo_program and t_promo_program_param.

They are represented by the following JPA entities:

@Entity
@Table(name = "t_promo_program")
public class PromoProgram {
  @Id
  @Column(name = "promo_program_id")
  private Long id;

  @OneToMany(cascade = {CascadeType.REMOVE})
  @JoinColumn(name = "promo_program_id")
  private List<PromoProgramParam> params;
}

@Entity
@Table(name = "t_promo_program_param") 
public class PromoProgramParam {
  @Id
  @Column(name = "promo_program_param_id")
  private Long id;

  //@NotNull // This is a Hibernate annotation so that my test db gets created with the NOT NULL attribute, I'm not married to this annotation.
  @ManyToOne
  @JoinColumn(name = "PROMO_PROGRAM_ID", referencedColumnName = "promo_program_id")
  private PromoProgram promoProgram;
}

When I delete a PromoProgram, Hibernate hits my database with:

update
    T_PROMO_PROGRAM_PARAM 
set
    promo_program_id=null 
where
    promo_program_id=?

delete 
from
    t_promo_program 
where
    promo_program_id=? 
    and last_change=?

I'm at a loss for where to start looking for the source of the problem.

© Stack Overflow or respective owner

Related posts about java

Related posts about jpa