I am having trouble when removing an item from a list.  The list is defined in a superclass, but the Hibernate annotations are applied to property accessors in a subclass.  There are two methods in the superclass that manipulate the list.  The "add" method works fine, but the "remove" does not persist changes.  I have checked my Cascade settings, and I seem to have things correct.  Am I doing something that is impossible.  If not, am I doing something incorrectly? 
I have two classes such as this:
Code:
@Entity
abstract class Temporal<T> {
    @Id
    @GeneratedValue
    private Long id;
    
    @Version
    private Integer version = null;
    @Transient
    protected List<T> content = new ArrayList<T>();
    public void remove(T value) {
        // business logic ...
        content.remove(value);
    }
    public void add(T value) {
        // business logic ...
        content.add(value);
    }
}
@Entity
@AccessType("property")
class TemporalAsset extends Temporal<Asset> {
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "temporal")
    public List<Asset> getContent() {
        return super.content;
    }
    protected void setContent(List<Asset> list) {
        super.content = list;
    }
}
I use an instance of the TemporalAsset class as follows:
Code:
temporalAsset.add(value1);
temporalAsset.getContent().size() == 1; // true
session. update(temporalAsset);
session.refresh(temporalAsset);
temporalAsset.getContent().size() == 1; // true
temporalAsset.remove(value1);
temporalAsset.getContent().size() == 0; // true
session.update(temporalAsset);
session.refresh(temporalAsset);
temporalAsset.getContent().size() == 0; // false, its 1
Thanks.