openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Chadwick M Baatz (JIRA)" <>
Subject [jira] Created: (OPENJPA-390) Implement an option for the Entity Manager to identify an entity based on an alternative key.
Date Tue, 02 Oct 2007 18:47:50 GMT
Implement an option for the Entity Manager to identify an entity based on an alternative key.

                 Key: OPENJPA-390
             Project: OpenJPA
          Issue Type: Wish
          Components: jpa
         Environment: Any
            Reporter: Chadwick M Baatz
            Priority: Minor

Right now if one has used JPA to map entities in a service that accepts request to perform
database storage the Entity Manager lacks the inherent capability to recognize duplicate entities
based on alternative keys.  Since it often makes for a better database design to create an
entity with both an id for relational mapping and an alternative key for uniqueness, it would
save redundant DAO logic if the Entity Manager could perform this logic.  For example, let's
say that there are two entities A and B where A owns and instance of B , each have a long
id value, and each entity has a alternative key which is defined as a unique constraint. 
In a application that receives random requests it is quite possible that two requests would
arrive where either entity being passed into the entity manager is a duplicate of a managed
entity.  Since most users of services neither know of or care about the id value at entity
creation, it's assumed that the id value isn't set.  

Under this scenario a merge request to the EntityManager would result in a persist action,
which would fail due to the unique constraint in the database.  It would be nice if there
was some way to tell the Entity Manager to look at search an alternate key if the id value
wasn't set and merge changes if a matching managed entity is found.  I have built a small
framework for my own projects that looks at the named queries of an entity for a specific
name, which if found is used to perform the ID look up.  This works well for finding and setting
the id value for detached objects, but it gets a tad more complicated when a entity contains
other entities.  I can think of another non-framework solution, which would be to create the
table without an id column and use the alternative key as the primary key, but that has some
drawbacks as well.  It seems to me like this is a condition that many users would come across
and would have to either create broiler plate DAOs or their own frameworks to populate the
id values on detached objects with alternative keys.  

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message