Hi,

I have a slight problem with map mappings.

public class Item extends BusinessDomainObject {
   private Map<Attribute, Value> values = new HashMap<Attribute, Value>();
   @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
   public Map<Attribute, Value> getValues() {        return values;    }
}

and:

public abstract class Value extends DomainObject {
   private Attribute attribute;
   private Item item;

   @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
   public Attribute getAttribute() {        return attribute;    }

   @ManyToOne(optional = false)
   public Item getItem() {        return item;    }

This all works quite fine. However when I put a new values into the map, without checking for old ones. I get duplicated assignments in my join. The map table is filled correctly but I would like the map to be in synch with the Value table. Means: it should remove the values that are assossiated with a given Item over the attribute map.
So what happens now is:

item.getValues().put(a1, v1);
store(item);

then i do:
item.getValues().put(a1, v2);

I would like v1 to be removed from the database automagically. Otherwise I would need to fetch the old values and update those all the time. Which is a bit of a hazzle.
Is that possible?

/Andreas

Reply via email to