Bom dia Galera,
estou com um grande problema, tenho um grid dentro da minha janela Locação, nele eu coloco os filmes que estão sendo locados,
o problema é que na 1º vez que carrega hibernate com o “create”, eu cadastro o cliente, cadastro o filme, quando vou para a tela de locaçao
coloco o nome do cliente, o filme, quando aperto o botao para inserir no grid, apaga o registro do cliente e do filme, muito estranho,
porque depois se eu mudar para update não da esse problema.
segue o código:
[code]
package views;
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Query;
import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableColumn;
import Beans.cliente_locadora;
import Beans.filme_locadora;
import Beans.locacao_locadora;
import Conexao.JpaUtil;
@SuppressWarnings("serial")
public class JanelaLocacao extends JFrame{
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
JLabel rotulo1, rotulo2, rotulo3, rotulo4, rotulo5, rotulo6, rotulo9, rotulo10;
JLabel rotulo7, rotulo8;
JButton cadastrar, fechar, alterar, excluir, consultar, limpar;
JTextField cod_locacao, cod_cli, cod_filme, data_locacao, titulo, desconto;
JTextField data_devolucao, valor, quantidade;
JFormattedTextField data;
private JScrollPane scrollPane;
private JTable tabela;
private JButton visualizarButton;
private JLabel nomeLabel;
private JLabel codigoLabel;
private JTextField nomeField;
private JTextField codigoField;
class TableModelLocacao extends AbstractTableModel {
private static final long serialVersionUID = 1L;
private List<filme_locadora> filme_locadora;
private String[] colunas = { "Código", "Titulo", "Genero" };
private int colSize[] = { 50, 80, 210};
public int getColumnCount() {
return colunas.length;
}
public int getRowCount() {
if (filme_locadora == null) {
return 0;
}
return filme_locadora.size();
}
public Object getValueAt(int rowIndex, int columnIndex) {
filme_locadora filme = filme_locadora.get(rowIndex);
switch (columnIndex) {
case 0:
return filme.getCod_filme();
case 1:
return filme.getTitulo();
case 2:
return filme.getGenero();
default:
return null;
}
}
public Class<?> getColumnClass(int columnIndex) {
if (columnIndex == 2) {
if (filme_locadora != null && !filme_locadora.isEmpty()) {
return getValueAt(0, columnIndex).getClass();
}
}
return super.getColumnClass(columnIndex);
}
@Override
public String getColumnName(int column) {
return colunas[column];
}
public void setColumnsWidth() {
for (int i = 0; i < colSize.length; i++) {
TableColumn tableColumn = tabela.getColumnModel().getColumn(i);
tableColumn.setPreferredWidth(colSize[i]);
tableColumn.setMinWidth(colSize[i]);
}
}
public void addItem(filme_locadora filme) {
if (filme_locadora == null) {
filme_locadora = new ArrayList<filme_locadora>();
}
filme_locadora.add(filme);
tabela.updateUI();
}
public filme_locadora getItem(int index) {
return filme_locadora.get(index);
}
public void setItems(List<filme_locadora> list) {
filme_locadora = list;
tabela.updateUI();
}
public List<filme_locadora> getItems() {
return filme_locadora;
}
public void removeItem(int index) {
if (filme_locadora != null) {
filme_locadora.remove(index);
}
tabela.updateUI();
}
public void removeItem(Object o) {
if (filme_locadora != null) {
filme_locadora.remove(o);
}
tabela.updateUI();
}
public void removeAll() {
filme_locadora = null;
tabela.updateUI();
}
}
[/code]
[code]
private void buscarAction() {
TableModelLocacao modelLocacao = (TableModelLocacao) tabela.getModel();
List<filme_locadora> filme_locadora;
filme_locadora = buscarFilmePorParametros(Integer.parseInt(cod_filme.getText()), titulo.getText());
if (filme_locadora != null && !filme_locadora.isEmpty()) {
for (filme_locadora filme_locadora2 : filme_locadora) {
modelLocacao.addItem(filme_locadora2);
}
tabela.setRowSelectionInterval(0, 0);
tabela.requestFocus();
} else {
JOptionPane.showMessageDialog(null, "Cai no else!");
desconto.requestFocus();
}
}
@SuppressWarnings("unchecked")
public List<filme_locadora> buscarFilmePorParametros(Integer cod_filme, String titulo) {
EntityManager em = JpaUtil.getEntityManager();
List<filme_locadora> filme = new ArrayList<filme_locadora>();
StringBuilder jpql = new StringBuilder("SELECT p FROM filme_locadora p WHERE p.cod_filme IS NOT NULL");//("SELECT p FROM cliente_locadora p WHERE p.cod_cli = ? OR p.nome_cli LIKE ?" );
if (cod_filme != null && !cod_filme.equals("")) {
jpql.append(" AND p.cod_filme = " + cod_filme);
}
else {
JOptionPane.showMessageDialog(null, "Entrei no String!");
jpql.append(" AND p.titulo =" +titulo );
}
try {
Query query = em.createQuery(jpql.toString());
filme = query.getResultList();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Cai no erro!");
e.printStackTrace();
}
return filme;
}
[/code]