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
eclipselink-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-dev