[Prev] Thread [Next]  |  [Prev] Date [Next]

[jira] Commented: (JDO-630) Support specification of exact class in SingleFieldIdentity Craig Russell (JIRA) Fri Jun 19 10:01:44 2009


Craig Russell commented on JDO-630:

To test this feature:
Add an instance of FullTimeEmployee with identity 1.

Object oid = new LongIdentity(PartTimeEmployee.class, 1);

try {
PartTimeEmployee pto = pm.getObjectById(oid, false);
} catch (JDOException ex) {
// must fail

try {
Object oid = new IntIdentity(PartTimeEmployee.class, 1);
} catch (JDOException ex) {
// must fail

Other cases with Person must also fail.

> Support specification of exact class in SingleFieldIdentity
> -----------------------------------------------------------
>                 Key: JDO-630
>                 URL: https://issues.apache.org/jira/browse/JDO-630
>             Project: JDO
>          Issue Type: Improvement
>          Components: specification
>            Reporter: Andy Jefferson
>            Assignee: Craig Russell
>             Fix For: JDO 2 maintenance release 3
> When calling PersistenceManager.getObjectById() with a SingleFieldIdentity, 
> there seems to be no way of avoiding the following 
> (if the implementation decides to do so):
> "It is an implementation decision whether to access the data store, if 
> required to determine the exact class. This will be the case of  inheritance, 
> where multiple <code>PersistenceCapable</code> classes share the same 
> ObjectId class."
> Now when I know for sure that the targetClassName of the given 
> SingleFieldIdentity already denotes the correct class for the given id,  how 
> can I avoid that additional roundtrip to the database for finding the exact 
> class?
> It would be useful to have a way of specifying a SingleFieldIdentity to be 
> for the exact class specified. This could be done by addition of methods
> void setExact(boolean flag);
> boolean getExact();
> to SingleFieldIdentity

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