The issue is that PrivateOwned implicitly adds a Cascade REMOVE to the association/relationship.
So if you do NOT want the cascade REMOVE on the relationship but you do want PrivateOwned to automatically delete any beans that are removed from the collection then you can use:
@PrivateOwned(cascadeRemove=false)
@OneToMany(cascade=CascadeType.PERSIST,mappedBy="master") @PrivateOwned(cascadeRemove=false) List<TSDetailTwo> details;
See TestPrivateOwnedNoCascadeRemove for a test case example.
fixed in HEAD.