Po zmaganiu się z tym przez kilka ostatnich godzin w końcu udało mi się to zadziałać w ramach mojego projektu. Zrobiłem tak:
Reguła sterowania
@OneToMany(fetch = FetchType.LAZY, mappedBy = "controlRuleAttribPK.controlRuleId")
@Cascade(CascadeType.ALL)
private List<ControlRuleAttrib> controlRuleAttribs;
Zasadniczo wskazuje, że kolekcja powinna używać controlRuleId ze złożonego klucza podstawowego. Jak dotąd działa świetnie!