step 1 : describe problem in JPA with Native Query
List<Object[]> objectlist =-------------------- ").getResultList();
Iterator<Object[]> iterator = customerList1.iterator();
while (iterator.hasNext()) {
Object[] customer = iterator.next();
Integer id = (Integer) customer[0];
String firstName = (String) customer[1];
String lastName = (String) customer[2];
}
=====================================very pain(indexing--customer[1]) coding form in JPA =======================================
step 2 : solution
1. step 1 format ------pain format
1. JDBC dbutils ------------- using only jdbc app / Not for JPA app
3. JPA Criteria api: hibernate . setResultTransformer --------only support JPA hibernate criteria query not for other way
4. sqlresultmaping - JPA 1.0 ---------use for JPA but database table field map is very hard for lage size query
5. @ConstructorResult(targetClass ) JPA 2.1 ---------big problem when declare the mapping of the fields in the constructor Ex --: columns={ @ColumnResult(name="balance"),
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Last Solution -----------------QLRM 1.5 --Framework
Query Language Result Mapper
download qlrm framework : qlrm-1.5.1.jar
http://mirrors.ibiblio.org/maven2/ch/simas/qlrm/qlrm/1.5.1/
http://mvnrepository.com/artifact/ch.simas.qlrm/qlrm/1.3
sample :No need iterator /looping : only this two line
Query query = em.createNativeQuery(sql1);
List<ClosingRecord> closelist = jpaResultMapper.list(query, ClosingRecord.class);
step 4 : Remarks-----------QLRM
1. same number of arguments as the result of the SQL
2. result types must match // type matching
3. maintin order
step 4 : QLRM problem : maintin order in constructor
solution : ViewModel /DTO generation
ResultSet rs = stmt.executeQuery(sql1);
classGenerator.generateFromResultSet(System.getProperty("user.dir"), null, "EmployeeNameTO", false, rs);
step 5 : follow attached file example and
-------------------------------------------------------------------End --------------------------------------------------------
step 6 : some study on this topics :
http://blog.jooq.org/2013/09/11/annotatiomania-2-1/
http://docs.oracle.com/javaee/7/api/javax/persistence/ConstructorResult.html
qlrm/ConstructorResult.md at master · simasch/qlrm · GitHub
http://onpersistence.blogspot.com/2010/07/eclipselink-jpa-native-constructor.html
Comments