2016-05-08 3 views
0

ResultSet в моем проекте у меня есть этот POJO класс:Наполните POJO, который содержит ArrayList другого POJO с помощью одного SQL предложений и правильно итерационного

CourseBean.java:

@Expose 
private Integer id; 
@Expose 
private String title = ""; 
@Expose 
private String description = ""; 
@Expose 
ArrayList<SubjectBean> alSubjects = new ArrayList(); 

Он содержит столбцы из таблицы «Курс» и арраиста, у которого были бы другие виды, представляющие предметы этого курса.

Чтобы заполнить эту POJO процедуру, которую Im используя следующий:

  1. Я делаю два SQL-предложения: первое, чтобы получить курс по ID и второй, чтобы получить все предметы, отфильтрованные по тот же курс ID.
  2. Теперь, чтобы заполнить PJO У меня есть метод заливки итерации первого resulset и внутри итерацию второго

можно оптимизировать эту процедуру? возможно, с одним предложением SQL ?.

---------------------------------- ИЗМЕНИТЬ ----------- -------------------------

Я буду использовать утверждение, что @Patrick Piatkowski мотивационные

SELECT * FROM Course 
JOIN Subject 
ON Course.id = Subject.course_id 
WHERE /* Your filters here */ 

Но теперь это приводит меня к другому вопросу. Когда я повторяю resulset, столбцы курса одинаковы в каждой строке.

this.setId(oResultSetCourse.getInt("id")); this.setTitle(oResultSetCourse.getString("title")); this.setDescription(oResultSetCourse.getString("description")); 

Те должны быть заполнены только один раз пока что POJO субъектов должны быть заполнены все итерации

Что такое лучший способ справиться с этим?

ответ

0

Вы можете использовать присоединиться:

SELECT * FROM Course 
JOIN Subject 
ON Course.id = Subject.course_id 
WHERE /* Your filters here */ 

или в качестве альтернативы

SELECT * FROM Subject 
WHERE course_id IN 
    (SELECT course_id FROM Course 
    WHERE /* Your filters here */) 

Преимущество второго подхода заключается в том, что вы получите только столбцы из Subject в то время как вы также можете получить столбцы из курса с помощью первое утверждение.

+0

Хорошо, я буду использовать первый оператор, потому что мне нужны столбцы таблицы курса, но теперь это приводит меня к другому вопросу. Когда я повторяю resulset, столбцы курса одинаковы в каждой строке. Каков наилучший способ справиться с этим? this.setId (oResultSetCourse.getInt ("id")); this.setTitle (oResultSetCourse.getString ("title")); this.setDescription (oResultSetCourse.getString ("описание")); те должны быть заполнены только один раз, между тем поэзия предметов должна быть заполнена на каждую итерацию –

+0

Не могли бы вы вставить свой предмет pojo? –

+0

Не волнуйтесь, я просто решил, THX за вашу помощь. –

Смежные вопросы