[ 
https://issues.apache.org/jira/browse/OPENJPA-370?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12539762
 ] 

Craig Russell commented on OPENJPA-370:
---------------------------------------

The test case doesn't have an example of where load fetch group is used. The 
only tests are for regular fetch groups. Some specific comments:

1. The test case should use spaces not tabs for delimiters.

2. The tests should use commit not rollback to detach the instances.

3. The tests testFieldsInFetchGroupAndLoadFetchGroupAreLoaded and 
testFieldsInFetchGroupAndLoadFetchGroupAreLoadedUsingFind

don't test load fetch groups. I'd suggest renaming them and changing their 
expected results as follows:

        /**
         * Verifies that when a field with a LoadFetchGroup L is fetched, the 
fields
         * included in L are not fetched either.
         *
         */
        public void testFieldsInFetchGroupAndNotLoadFetchGroupAreLoaded() {
                OpenJPAEntityManager em = emf.createEntityManager();
                List<PObject> pcs = findByQuery(em, "SELECT p FROM PObject p", 
"f3");
                for (PObject pc:pcs) 
                        assertLoaded(em, pc, "f3");
        }
        
        public void 
testFieldsInFetchGroupAndNotLoadFetchGroupAreLoadedUsingFind() {
                OpenJPAEntityManager em = emf.createEntityManager();
                PObject pc = findById(em, OID, "f3");
                assertLoaded(em, pc, "f3");
        }
        
To test load fetch group you need to add internal methods that load field f3 
after querying or finding it and then commit the transaction. Something like 
findByIdAndAccessField (OpenJPAEntityManager em, String field, Object oid, 
String... fetchGroups). After finding the object, it would access the named 
field and then commit. Similar functionality is needed for 
findByQueryAndAccessField.

To do this, I would refactor isLoaded into isLoaded and loadField. The 
loadField can be used by the findByIdAndAccessField and 
findByQueryAndAccessField methods to access a field.



> LoadFetchGroup annotation was not recognized during the fetch1
> --------------------------------------------------------------
>
>                 Key: OPENJPA-370
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-370
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: kernel
>    Affects Versions: 1.0.1, 1.0.2, 1.1.0
>            Reporter: Teresa Kan
>            Assignee: Teresa Kan
>             Fix For: 1.0.2, 1.1.0
>
>         Attachments: OPENJPA_370_2.patch, TestFetchGroup.zip, TestJIRA370.zip
>
>
> Employee class has a LoadFetchGroup annotation defined on the Rating field, 
> when getRating was called, the address should be returned also. However, 
> openjpa did not handle the LoadFetchGroup correctly, therefore, address was 
> not eargly fetched.
> public class FGEmployee{
>     @Id
>     private int id;
>  
>     @OneToOne(fetch=FetchType.LAZY) 
>     private FGAddress address;
>  
>     @Basic(fetch=FetchType.LAZY)
>     @LoadFetchGroup("AddressFetchGroup")
>     private String rating;
>  
>     @ManyToOne(fetch=FetchType.LAZY)
>     private FGManager manager;
> ..
> }

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

Reply via email to