Consider the following example:
@Id(generate = GeneratorType.AUTO)
@Column(name = "primary_key")
@Column(name = "natural_key"
public Foobar(String natural_key)
this.natural_key = natural_key;
equals() // use natural key ...
hashcode() // use natural key ...
I would like to be able to instantiate a new instance via the natural key constructor and persist this with merge()-like semantics. By this I mean I want the entity manager to determine whether persisting the new instance will result in an insert or an update based on the unique constraint annotations on the entity. I cannot use merge() for this since the instance will not be detached, rather it will be new (without the db generated PK set). I could do this manually by coding a find then insert/update myself, but it seems like something the persistence layer could do for me. Furthermore if I do it myself, then I am duplicating the unique constraint information for this class (in the annnotation and in my find() method).
Any ideas/suggestions? Thanks.