Обрабатывать несколько строк в пакете Spring
Я новичок в весенней партии, я просто хочу спросить, как я могу получить данные из нескольких строк набора результатов. У меня есть следующий сценарий:
- Есть две разные таблицы, скажем, сотрудник и заработная плата.
- Сотрудник может иметь несколько заработной платы на основе некоторого идентификатора.
- Я использовал запрос
select * from emp,pay whem emp.id=pay.id & emp.id = "id"
, - Теперь он возвращает несколько строк, и я должен создать XML
Структура XML:
<EMP> .... ... <Payroll> . . . </Payroll> <Payroll> . . . </Payroll> </emp>
При использовании RowMapper
Я могу создать только одного ребенка из фонда заработной платы, но в таблице может быть несколько детей. Пожалуйста помоги...
2 ответа
Решение
Именно в этом сценарии использования были созданы платформы ORM, такие как Hibernate. Рассмотреть возможность использования HibernateCursorItemReader
для вашего читателя, а затем определите свой постоянный слой так, чтобы у вас было следующее:
@Entity
@Table(name = "emp")
public class Employee {
@Id
@Column(name = "emp_id")
private Long id;
@OneToMany(mappedBy="employee")
private Set<Payment> payments = new HashSet<>();
}
@Entity
@Table(name = "pay")
public class Payment {
@Id
@Column(name = "pay_id")
private Long id;
@ManyToOne
@JoinColumn(name = "emp_id")
private Employee employee;
}
Вам нужно что-то вроде группового считывателя, который обернут вокруг вашей базы данных.
Я объяснил этот подход в другом ответе: Spring для объединения значений и записи одного значения