Olá.
Estou com uma dificuldade com relação a persistencia de coleções.
Tenho o seguinte cenário:
Cadastrar um empréstimo.
Neste emprestimo tenho uma coleção de exemplares.
No método de efetuar emprestimo usei o seguinte:
int indice = 0;
for (Exemplar exemplar : exemplarEscolhidos) {
emprestimo.getExemplar().add(exemplarEscolhidos.get(indice));
indice++;
}
Os exemplares são listados em um Jtable. Depois são pegos e criado a coleção.
A table é listada buscando o exemplar pela referencia:
[code]/**Método que pesquisa a obra no banco de dados e preenche os atributos definidos numa tabela.*/
private void buscarObra() {
if (txReferenciaExemplar.getText().isEmpty()) {
JOptionPane.showMessageDialog(this, “Informe a referência da Obra a ser cadastrada!”);
// return;
}
int codigoExemplar = Integer.valueOf(txReferenciaExemplar.getText());
Exemplar exemplar = ExemplarDAO.fabricaExemplarDAO().findById(codigoExemplar);
ItemBiblioteca obra = ItemBibliotecaDAO.fabricaItemBibliotecaDAO().findById(exemplar.getCodItemBiblioteca().getCodItemBiblioteca());
Secao secaoLocal = SecaoDAO.fabricaSecaoDAO().findById(exemplar.getCodItemBiblioteca().getCodSecao().getCodSecao());
if (exemplar == null) {
JOptionPane.showMessageDialog(this, "Nenhum registro de obra foi encontrado.");
return;
}
DefaultTableModel modelo = new DefaultTableModel();
if (exemplar.getInConsulta() != 0) {
JOptionPane.showMessageDialog(this, "Este não pode ser emprestado!");
return;
} else {
exemplarEscolhidos.add(exemplar);
}
modelo.addColumn("Código");
modelo.addColumn("Título");
modelo.addColumn("Seção");
modelo.addColumn("Referência");
for (Exemplar exemp : exemplarEscolhidos) {
modelo.addRow(new Object[]{exemp.getCodExemplar(), obra.getTxTitulo(),
secaoLocal.getNoSecao(), obra.getNuReferencia()});
}
tbListarObras.setModel(modelo);
}[/code]
A proposito esse metodo buscarObra tá pegando um exemplar e o adicionando a linha, quando é selecionado um outro exemplar este exemplar muda todas os seu valores para o ultimo que foi selecionado.
O que tá havendo?
Utilizo o Hibernate.
Como resolvo esses dois problemas?