Seit JPA 2 gibt es endlich die Moeglichkeit verweiste Objekte einer Collection loeschen zu lassen, so dass keine Hibernate spezifischen Annotationen mehr erforderlich sind.

Hier am Beispiel einer unidirektionalen Assoziation mit JPA 2:

@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
private Set<PhoneNumber> resultSet = new ArrayList<PhoneNumber>();

Seit Hibernate 3.5.0-Final wird dies auch unterstützt. Offenbar gibt es da aber noch (irgendwo) einen kleinen Bug. Auch kleine Bugs kann man sehr lange suchen. Wenn man weiß, dass ein Update auf Hibernate 3.5.2 Abhilfe schafft, kann man sich das Suchen auch sparen.
Man muss es eben nur wissen.

Nach so einem Tag hilft nur noch eins: