I2 varlık sınıfları aşağıdaki 1.student 2. resluts sahip ve ayarlanmış bir sonucun elde edildiği aşağıdaki uyarlanmış bir sorguyubirden fazla işletme Yay JPA sorgu resultset birleştirme erişme
select s.roll_no , s.first_name, s.age ,r.subject_name , r.marks from student s , results r where s.roll_no= : rollNo and r.marks >70
yürüterek bir resultset dönmek zorunda Hem öğrenci hem de sonuç varlığının kombinasyonu. Bu senaryoda, uygulamamı nasıl yazarım. i resultset ve sonuçları varlık nesnelerden sadece öğrenci varlık değerleri burada görünür değildi elde edebildi yukarıdaki ile
public interface GetStudentDetail extends CrudRepository<Student, String> {
@Transactional(readOnly=true)
@Query("select s.roll_no , s.first_name, s.age ,r.subject_name , r.marks from student s , results r where s.roll_no= : rollNo and r.marks >70")
public List<student> getStudentDetails(@Param("rollNo")String rollNo);
}
: Ben iki yaklaşımın
Yaklaşım 1'in altında çalıştık.
Yaklaşım 2: Bununla
public interface GetStudentDetail extends CrudRepository<Student, String> {
@Transactional(readOnly=true)
@Query("select s.roll_no , s.first_name, s.age ,r.subject_name , r.marks from student s , results r where s.roll_no= : rollNo and r.marks >70")
public List<Object[]> getStudentDetails(@Param("rollNo")String rollNo);
}
i varlık değişkeni hem bir daha VO sınıfını yarattı ve ben aşağıya elle
List<StudentResultVo>studtVoObjList = new ArrayList<StudentResultVo>();
for (Object[] resObj : resultSetList) {
StudentResultVo studtVO = new StudentResultVo();
if (resObj[0] != null) {
studtVO.setRollNo(resObj[0].toString().trim());
}
//.First name
//.Age
if (resObj[3] != null) {
studtVO.setSubName(resObj[3].toString().trim());
}
//.Marks
studtVoObjList.add(studtVO);
}
gibi kendisine pozisyon erişerek bu nesneye ayarlanmış i Yukarıdaki yaklaşımın iyi bir kodlama uygulaması olmadığını biliyordu. Bu soruna çözüm bulmak için herhangi bir yolu var mı.
Teşekkürler.