On Mon, Nov 22, 2010 at 6:03 AM, Tom Ware <
tom.ware@xxxxxxxxxx <mailto:
tom.ware@xxxxxxxxxx>> wrote:
   Hi Samba,
    Any code contribution you make should be through bugzilla - that is
   a requirement from the Eclipse foundation.
   -Tom
   Samba wrote:
       Hi Eclipse Link Community,
           I think many people might have felt that annotating the
       named queries on entites is difficult to maintain over time and
       some times confusing in a way that finding a proper entity to
       place the query will be difficult in case of queries that fetch
       details from several entities.
        There is already enough frustration documented about this on
       the bloggosphere, for example:
       here <
http://jdevelopment.nl/java/put-named-queries-jpa/> and
       here
       <
http://freddy33.blogspot.com/2007/07/jpa-namedqueries-and-jdbc-40.html>.
        How about a cental place like a constants file where we can put
       all related named queries in one class, like the one below?
        @*QueryCollection*(
          @NamedQuery(name=NamedQueries.fetchAnnualSalaryOfAnEmployee,
                                query="SELECT EMP.id, EMP.name,
                                EMP.CTC FROM Employee EMP WHERE
       EMP.name=:employeeName"),
         @NamedQuery(name=Named.Queries.fetchEmployeeHierarchy,
                                query="SELECT Emp.id, Emp.name,
                                 Mgr.id,Mgr.name FROM Employee Emp JOIN
                                 Employee.manager Mgr  JOIN
       Emp.department Dept WHERE
                                 Dept.name=:departmentName")
        )
       public class NamedQueries {
               private static final String
       fetchAnnualSalaryOfAnEmployee="fetchAnnualSalaryOfAnEmployee";
               private static final String
       fetchEmployeeHierarchy="fetchEmployeeHierarchy";
        }
        And then we can refer to these while executing the queries from
       the same constants file like:
                      Query
       query=em.createNamedQuery(NamedQueris.fetchAnnualSalaryOfAnEmployee);
                     query.getSingleResult();
        I have implemented this feature in EclipseLink by using the
       same metadata processing framework that is used for dealing with
       named queries on entities.
        I'm attaching the code as zip file to this mail :
       [ one annoation, one meta data processing class, a patch file
       showing the changes made to some four or five eclipselink
       classes, sample entities for testing, and a test case]
         Please review attached code and let me know how to formally
       contribute this feature to the eclipselink project.
        Thanks and Regards,
       Samba        
       ------------------------------------------------------------------------
       _______________________________________________
       eclipselink-dev mailing list