Después de luchar con esto durante las últimas horas, finalmente lo hago funcionar dentro de mi proyecto. Lo que hice fue esto:
Regla de control
@OneToMany(fetch = FetchType.LAZY, mappedBy = "controlRuleAttribPK.controlRuleId")
@Cascade(CascadeType.ALL)
private List<ControlRuleAttrib> controlRuleAttribs;
Básicamente, señala que la colección debe usar controlRuleId de la clave principal compuesta. ¡Hasta ahora funciona muy bien!