Dopo aver lottato con questo nelle ultime ore, finalmente lo faccio funzionare all'interno del mio progetto. La cosa che ho fatto è stata questa:
Regola di controllo
@OneToMany(fetch = FetchType.LAZY, mappedBy = "controlRuleAttribPK.controlRuleId")
@Cascade(CascadeType.ALL)
private List<ControlRuleAttrib> controlRuleAttribs;
Fondamentalmente indicando che la raccolta dovrebbe usare controlRuleId dalla chiave primaria composita. Finora funziona benissimo!