Popular Jcombobox(REsolvido)

64 respostas
java
D

Estou tentando fazer uma consulta no banco para popular uma jcomboxbox com as siglas do estados mas nao esta dando certo alguém pode me ajudar?

segue minha consulta?

private void ufActionPerformed(java.awt.event.ActionEvent evt) {                                   
        // TODO add your handling code here:
        Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
        Long estadoCodigo = null; 
		try {
			Criteria consulta = sessao.createCriteria(Estado.class);
			consulta.add(Restrictions.eq("estado.codigo", estadoCodigo));	
			consulta.addOrder(Order.asc("nome"));
			List<Estado> resultado = consulta.list();
		} catch (RuntimeException erro) {
			throw erro;
		} finally {
			sessao.close();
		}
    }

64 Respostas

R

onde vc adiciona no combo? pq nao ta dando certo?

D

vou colocar todo o código aqui
pra voce ver

D

seria na tela cidades

D

adiciono os estados de certo esta faltando algum valor para pegar que eu nao vi

D

Tela Cidades

/*

  • To change this license header, choose License Headers in Project Properties.
  • To change this template file, choose Tools | Templates
  • and open the template in the editor.
    */
    package com.meson.sistemavendas.tela;
import com.meson.sistemavendas.domain.Cidade;

import com.meson.sistemavendas.domain.Estado;

import com.meson.sistemavendas.util.HibernateUtil;

import java.util.List;

import org.hibernate.Criteria;

import org.hibernate.Session;

import org.hibernate.criterion.Order;

import org.hibernate.criterion.Restrictions;

/**
*

  • @author Dani
    */
    public class TelaCidade extends javax.swing.JFrame {

    /**

    • Creates new form TelaCidade
      */
      public TelaCidade() {
      initComponents();
      }

    /**

    • This method is called from within the constructor to initialize the form.

    • WARNING: Do NOT modify this code. The content of this method is always

    • regenerated by the Form Editor.
      
      */
      
      @SuppressWarnings(unchecked)
      
      // 
      
      private void initComponents() {
      
      jLabel1 = new javax.swing.JLabel();
      
      jLabel2 = new javax.swing.JLabel();
      
      jTextField1 = new javax.swing.JTextField();
      
      jLabel3 = new javax.swing.JLabel();
      
      uf = new javax.swing.JComboBox();
      

      setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

      jLabel1.setText(“Cadastro de Cidades”);

      jLabel2.setText(“Nome:”);

      jLabel3.setText("UF: ");

      uf.setModel(new javax.swing.DefaultComboBoxModel(new String[] { Item 1, Item 2, Item 3, Item 4 }));
      
      uf.addActionListener(new java.awt.event.ActionListener() {
      
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      
      ufActionPerformed(evt);
      
      }
      
      });
      
      javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
      
      getContentPane().setLayout(layout);
      
      layout.setHorizontalGroup(
      
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(layout.createSequentialGroup()
      
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(layout.createSequentialGroup()
      
      .addGap(149, 149, 149)
      
      .addComponent(jLabel1))
      
      .addGroup(layout.createSequentialGroup()
      
      .addContainerGap()
      
      .addComponent(jLabel2)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 274, javax.swing.GroupLayout.PREFERRED_SIZE))
      
      .addGroup(layout.createSequentialGroup()
      
      .addContainerGap()
      
      .addComponent(jLabel3)
      
      .addGap(18, 18, 18)
      
      .addComponent(uf, javax.swing.GroupLayout.PREFERRED_SIZE, 77, javax.swing.GroupLayout.PREFERRED_SIZE)))
      
      .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
      
      );
      
      layout.setVerticalGroup(
      
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(layout.createSequentialGroup()
      
      .addContainerGap()
      
      .addComponent(jLabel1)
      
      .addGap(18, 18, 18)
      
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      
      .addComponent(jLabel2)
      
      .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
      
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      
      .addComponent(jLabel3)
      
      .addComponent(uf, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      
      .addContainerGap(35, Short.MAX_VALUE))
      
      );
      

      pack();
      }//

    private void ufActionPerformed(java.awt.event.ActionEvent evt) {
    
    // TODO add your handling code here:
    
    Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
    
    Long estadoCodigo = null;
    
    try {
    
    Criteria consulta = sessao.createCriteria(Estado.class);
    
    consulta.add(Restrictions.eq(“estado.codigo”, estadoCodigo));	
    
    consulta.addOrder(Order.asc(“nome”));
    
    List resultado = consulta.list();
    
    } catch (RuntimeException erro) {
    
    throw erro;
    
    } finally {
    
    sessao.close();
    
    }
    
    }
    

    /**

    • @param args the command line arguments
      /
      public static void main(String args[]) {
      /
      Set the Nimbus look and feel /
      //
      /
      If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

      • For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
        */
        try {
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
        if (“Nimbus”.equals(info.getName())) {
        javax.swing.UIManager.setLookAndFeel(info.getClassName());
        break;
        }
        }
        } catch (ClassNotFoundException ex) {
        java.util.logging.Logger.getLogger(TelaCidade.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(TelaCidade.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(TelaCidade.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(TelaCidade.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //
      /* Create and display the form */
      
      java.awt.EventQueue.invokeLater(new Runnable() {
      
      public void run() {
      
      new TelaCidade().setVisible(true);
      
      }
      
      });
      
      }
      
    // Variables declaration - do not modify
    
    private javax.swing.JLabel jLabel1;
    
    private javax.swing.JLabel jLabel2;
    
    private javax.swing.JLabel jLabel3;
    
    private javax.swing.JTextField jTextField1;
    
    private javax.swing.JComboBox uf;
    
    // End of variables declaration
    
    }
    
D

cidade

package com.meson.sistemavendas.domain;

import java.io.Serializable;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.JoinColumn;

import javax.persistence.ManyToOne;

/**
*

  • @author Dani
    
    */
    
    @SuppressWarnings(serial)
    
    @Entity
    
    public class Cidade implements Serializable{
    
    @Column(length = 50, nullable = false)
    
    private String nome;
    
    @ManyToOne
    
    @JoinColumn(nullable = false)
    
    private Estado estado;
    
    @GeneratedValue(strategy = GenerationType.AUTO)
    
    @Id
    
    private Long codigo;
    
    public Long getCodigo() {
    
    return codigo;
    
    }
    
    public void setCodigo(Long codigo) {
    
    this.codigo = codigo;
    
    }
    
    <a class="mention" href="/u/override">@Override</a>
    
    public String toString() {
    
    return String.format("%s[codigo=%d]", getClass().getSimpleName(), getCodigo());
    
    }
    
    public String getNome() {
    
    return nome;
    
    }
    
    public void setNome(String nome) {
    
    this.nome = nome;
    
    }
    
    public Estado getEstado() {
    
    return estado;
    
    }
    
    public void setEstado(Estado estado) {
    
    this.estado = estado;
    
    }
    
    }
    
D

hibernateutil

package com.meson.sistemavendas.util;

import com.meson.sistemavendas.domain.Cidade;

import com.meson.sistemavendas.domain.Estado;

import java.sql.Connection;

import java.sql.SQLException;
import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.boot.registry.StandardServiceRegistryBuilder;

import org.hibernate.cfg.Configuration;

import org.hibernate.jdbc.ReturningWork;

import org.hibernate.service.ServiceRegistry;

public class HibernateUtil {
private static SessionFactory fabricaDeSessoes = criarFabricaDeSessoes();

public static SessionFactory getFabricaDeSessoes() {
	return fabricaDeSessoes;
}

public static Connection getConexao(){
	Session sessao = fabricaDeSessoes.openSession();
	
	Connection conexao = sessao.doReturningWork(new ReturningWork<Connection>() {
		@Override
		public Connection execute(Connection conn) throws SQLException {
			return conn;
		}
	});
	
	return conexao;
}

private static SessionFactory criarFabricaDeSessoes() {
	try {
		Configuration configuracao = new Configuration().configure();
                    configuracao.addAnnotatedClass(Estado.class);
                     configuracao.addAnnotatedClass(Cidade.class);
		
		ServiceRegistry registro = new StandardServiceRegistryBuilder().applySettings(configuracao.getProperties()).build();
		
		SessionFactory fabrica = configuracao.buildSessionFactory(registro);
		
		return fabrica;
	} catch (Throwable ex) {
		System.err.println("A fábrica de sessões não pode ser criada." + ex);
		throw new ExceptionInInitializerError(ex);
	}
}

}

D

só uso essas classes estou tentando fazer o mais simples possível a minha aplicação

D

Alterei o código de novo não popula de jeito nenhum o jcombobox rsrsrs preciso de uma luz segue o codigo

private void ufActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
Estado est = new Estado();
try {
Criteria consulta = sessao.createCriteria(Estado.class);
consulta.add(Restrictions.eq(est.getSigla(),“sigla”));
List resultado = consulta.list();
} catch (RuntimeException erro) {
throw erro;
} finally {
sessao.close();
}
}

D

imagem da minha tecla

D

@Dfodani, para popular o JComboBox, você precisa mais do que fazer uma consulta e popular uma lista.
Precisa fazer algo como:

JComboBox<Estado> combo = new  JComboBox<Estado>();
for(Estado est : listaDeEstados) {
    combo.addItem(est);
}

Sem isso, nada feito.

D

dei uma alterada no codigo mas fica dando pau na linha do for

private void ufActionPerformed(java.awt.event.ActionEvent evt) {                                   
        // TODO add your handling code here:
        Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
        Estado est = new Estado();
                    Criteria consulta = sessao.createCriteria(Estado.class);
consulta.add(Restrictions.eq(est.getSigla(),"sigla"));
            List<Estado> resultado = consulta.list();
             JComboBox<Estado> combo = new  JComboBox<Estado>();
        Iterable<Estado> listaDeEstados = null;
            for(Estado est : listaDeEstados){
             combo.addItem(est);
            }
    }
D

Vai dar mesmo, afinal, a tua lista é essa:

Logo. o for deve usar o que ela trouxe:

for(Estado est : resultado) {
D

mesmo assim da erro no for

private void ufActionPerformed(java.awt.event.ActionEvent evt) {                                   
        // TODO add your handling code here:
        Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
        Estado est = new Estado();
                    Criteria consulta = sessao.createCriteria(Estado.class);
consulta.add(Restrictions.eq(est.getSigla(),"sigla"));
            List<Estado> resultado = consulta.list();
             JComboBox<Estado> combo = new  JComboBox<Estado>();
             for(Estado est : resultado) {
             combo.addItem(est);
             }
    }
D

Se agora alterei o for nao era pra dar certo?

D

Qual o erro?

D

D

apenas fica essa lampada com vermelhinho ao executar nao aparece nada

D

Se você clicar sobre a tal “lâmpada” deve aparecer um popup com uma mensagem informando a razão do erro.

D

sim aparece só que aparece só usar operação funcional
ja tentei usar só que ai fica vermelho de vez o erro fica pior rsrs

D

ja tentei usar de tudo aqui clicando nessas lampadas mas nao funciona :confused:

D

Então, será que é possível informar qual a mensagem que aparece?

R

As vezes é bug da IDE, salva o arquivo, fecha ele e abre novamente… O ARQUIVO, não precisa fechar o projeto todo

D

ele altera o codigo assim quando coloca utililizar operação funcional clicando na lampada anterior quando executo nao aparece mensagem nenhuma mas não puxa as siglas dos estados

D

ta

D

limpei e construi o projeto de novo

error: variable est is already defined in method ufActionPerformed(ActionEvent)

for(Estado est : resultado) {

Note: C:\Users\Dani\Desktop\SistemaVendas\src\com\meson\sistemavendas\tela\TelaCidade.java uses or overrides a deprecated API.

Note: Recompile with -Xlint:deprecation for details.

Note: C:\Users\Dani\Desktop\SistemaVendas\src\com\meson\sistemavendas\tela\TelaCidade.java uses unchecked or unsafe operations.

Note: Recompile with -Xlint:unchecked for details.

1 error

C:\Users\Dani\Desktop\SistemaVendas\nbproject\build-impl.xml:923: The following error occurred while executing this line:

C:\Users\Dani\Desktop\SistemaVendas\nbproject\build-impl.xml:263: Compile failed; see the compiler error output for details.

FALHA NA CONSTRUÇÃO (tempo total: 4 segundos)
D

A mensagem é bem clara: variable est already exists…
Traduzindo: você já tem, em algum ponto do código, uma variável chamada est.
A sugestão é trocar:

for(Estado estado_ : resultado) {
    combo.addItem(estado_);
}
D

Alterei mais uma vez mas não tras as uf ainda
agora não deu erro nenhum…eu uso sigla para a coluna de uf no banco de dados sera que tem algo errado?

Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
    Estado est = new Estado();
                Criteria consulta = sessao.createCriteria(Estado.class);
consulta.add(Restrictions.eq(est.getSigla(),sigla));

List resultado = consulta.list();

JComboBox combo = new  JComboBox();

for(Estado estado_ : resultado) {

combo.addItem(estado_);

}
D

Classe Estado

package com.meson.sistemavendas.domain;

import java.io.Serializable;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;
@SuppressWarnings(serial)

@Entity

public class Estado implements Serializable {

@GeneratedValue(strategy = GenerationType.AUTO)

@Id

private Long codigo;

@Column(length = 2, nullable = false)

private String sigla;
@Column(length = 50, nullable = false)
private String nome;
    
    public Long getCodigo() {
	return codigo;
}

public void setCodigo(Long codigo) {
	this.codigo = codigo;
}

public String toString() {
	return String.format("%s[codigo=%d]", getClass().getSimpleName(), getCodigo());
}

public String getSigla() {
	return sigla;
}

public void setSigla(String sigla) {
	this.sigla = sigla;
}

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

}

D

Uma coisa de cada vez.
Você tem certeza que a lista está sendo populada? Caso isso não esteja ocorrendo, então, é preciso verificar a causa.

Eu não entendi a razão de você colocar essa restriction aqui.

Se a ideia é listar os estados, não tem por que essa restriction.

D

na verdade nao tenho certeza eu preciso popular apenas pra chamar as siglas eu vou tentar tirar essa restriction ai pra ver que vira

D

outra coisa a est é que estanciei estado est = new Estado();

e quando faço o for eu pego estado_ pode nao estar chamando também

D

o código é so isso que esta chamando dentro do jcombobox e simplesmente não funciona rsrs
eu coloquei o nome do meu combobox de uf no programa

private void ufActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
Criteria consulta = sessao.createCriteria(Estado.class);
List resultado = consulta.list();
JComboBox combo = new JComboBox();
for(Estado estado_ : resultado) {
combo.addItem(estado_);

}
}

D

Precisamos eliminar as possibilidades.
Minha sugestão é que você debugue a aplicação ou imprima o conteúdo da lista de estados, após a query.
E, no meu ponto de vista, remova a linha onde adiciona a condição (restriction);

D

vou ver aqui de novo rs

D

D

nao deu erro ao debugar so apareceu essa mensagem

D

Olha, opinião pessoal, netbeans é uma merda.

List resultado = consulta.list();
System.out.println(resultado);

Coloca a linha de impressão, logo abaixo da busca. Aí o java deve printar o que a lista possui

D

não sei nem o que fazer mais vc tem algum pedaço de codigo que voce popula com hibernate talvez alterando como exemplo

D

também acho rsrs foda é que preciso desenhar as telas indica algum outro ide plugin?

D

Eu sempre preferi usar Eclipse com WindowBuilder.
Acho muito mais produtivo e gera menos lixo no código.

D

vou desinstalar essa versão e instalar uma mais atual do netbeans porque nem mensagem nao quer aparecer ai abro o projeto na nova ai te aviso aqui to até nervosa ja rsrs

D

vou ver esse window builder nunca usei

D

O windowbuilder é só para o eclipse.

D

então so que vou tentar usar ele pra ver o eclipse é melhor mesmo rsrs esse outro da mta dor de cabeça rs

D

eu comecei pelas telas mais simples pq isso que estou fazendo é o básico por que o sistema quase todo usa combobox etc…

D

Certo.
Eu realmente recomendo eclipse. Uso há anos e desde sempre foi muito mais fácil que o netbeans.

D

agora to aqui apanhando para arrastar os componentes do window builder kkk

D

Teoricamente, não deveria ser difícil.
Talvez você precise definir o layout manager como default, a fim de evitar o redimensionamento e reposicionamento automático.

D

onde eu defino? é que nunca usei eu nao sei rs vou procurar no google

D

Selecionando o JFrame ou JPanel em questão, veja que abre uma banda de propriedades. Se eu bem me lembro, a primeira propriedade é layout.

D

oi Darlan eu alterei tudo agora to com um probleminha aqui nao salva mais kkkkkk
nao da erro nem nada mas passei o codigo e ai deu um monte de pau chateada

minha tela estado ai

package com.meson.sistemavendas.Tela;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.border.EmptyBorder;

import org.hibernate.Session;
import org.hibernate.Transaction;

import com.meson.sistemavendas.Domain.Estado;
import com.meson.sistemavendas.util.HibernateUtil;

import javax.swing.GroupLayout;

import javax.swing.GroupLayout.Alignment;

import javax.swing.JLabel;

import javax.swing.JTextField;

import javax.swing.LayoutStyle.ComponentPlacement;

import javax.swing.JButton;

public class TelaEstado extends JFrame {

private JPanel contentPane;
private JTextField textField;
private JTextField textField_1;

/**
 * Launch the application.
 */
public static void main(String[] args) {
	EventQueue.invokeLater(new Runnable() {
		public void run() {
			try {
				TelaEstado frame = new TelaEstado();
				frame.setVisible(true);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	});
}

/**
 * Create the frame.
 */
public TelaEstado() {
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	setBounds(100, 100, 450, 300);
	contentPane = new JPanel();
	contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
	setContentPane(contentPane);
	
	JLabel lblNewLabel = new JLabel("Nome:");
	
	JLabel lblNewLabel_1 = new JLabel("Sigla");
	
	textField = new JTextField();
	textField.setColumns(10);
	
	textField_1 = new JTextField();
	textField_1.setColumns(10);
	
	JButton btnSalvar = new JButton("Salvar");
	
	JLabel lblCadastroDeEstados = new JLabel("Cadastro de Estados");
	GroupLayout gl_contentPane = new GroupLayout(contentPane);
	gl_contentPane.setHorizontalGroup(
		gl_contentPane.createParallelGroup(Alignment.LEADING)
			.addGroup(gl_contentPane.createSequentialGroup()
				.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
					.addGroup(gl_contentPane.createSequentialGroup()
						.addComponent(lblNewLabel)
						.addPreferredGap(ComponentPlacement.RELATED)
						.addComponent(textField, GroupLayout.PREFERRED_SIZE, 326, GroupLayout.PREFERRED_SIZE))
					.addGroup(gl_contentPane.createSequentialGroup()
						.addComponent(lblNewLabel_1)
						.addPreferredGap(ComponentPlacement.RELATED)
						.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
							.addComponent(btnSalvar)
							.addComponent(textField_1, GroupLayout.PREFERRED_SIZE, 73, GroupLayout.PREFERRED_SIZE)))
					.addGroup(gl_contentPane.createSequentialGroup()
						.addGap(129)
						.addComponent(lblCadastroDeEstados)))
				.addContainerGap(63, Short.MAX_VALUE))
	);
	gl_contentPane.setVerticalGroup(
		gl_contentPane.createParallelGroup(Alignment.LEADING)
			.addGroup(gl_contentPane.createSequentialGroup()
				.addContainerGap()
				.addComponent(lblCadastroDeEstados)
				.addGap(25)
				.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
					.addComponent(lblNewLabel)
					.addComponent(textField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
				.addGap(18)
				.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
					.addComponent(lblNewLabel_1)
					.addComponent(textField_1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
				.addGap(50)
				.addComponent(btnSalvar)
				.addContainerGap(71, Short.MAX_VALUE))
	);
	contentPane.setLayout(gl_contentPane);
}
	 private void btnSalvarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
	        // TODO add your handling code here:
	    	Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
			Transaction transacao = null;
	                Estado estado = new Estado();

			try {
	                    estado.setNome(textField.getText());
	                    estado.setSigla((textField_1.getText()));
				transacao = sessao.beginTransaction();
				sessao.save(estado);
				transacao.commit();
			} catch (RuntimeException erro) {
				if (transacao != null) {
					transacao.rollback();
				}
				throw erro;
			} finally {
				sessao.close();
			}
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
}

}

D

Minha bola de cristal está fora de área.
Preciso que diga quais foram estes “monte de pau” que deu.
Senão, fica difícil.

D

consegui fazer salvar mas deu um errinho no final

dez 27, 2019 5:10:38 PM org.hibernate.engine.jdbc.env.internal.LobCreatorBuilderImpl useContextualLobCreation
INFO: HHH000424: Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException
dez 27, 2019 5:10:38 PM org.hibernate.type.BasicTypeRegistry register
INFO: HHH000270: Type registration [java.util.UUID] overrides previous : org.hibernate.type.UUIDBinaryType@4b197a5a
dez 27, 2019 5:10:40 PM org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection
INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@292c8408] for (non-JTA) DDL execution was not in auto-commit mode; the Connection ‘local transaction’ will be committed and the Connection will be set into auto-commit mode.
Hibernate: create table Cidade (codigo int8 not null, nome varchar(50) not null, estado_codigo int8 not null, primary key (codigo))

D

Esse trecho não mostra nenhum erro.

D

ta com aquela frescura de recriar tabela de novo nao entendo por que eu ja tinha refeito o hibernate cfg e tinha parado com isso :confused: ai agora na outra ide esta acontecendo isso por que ?

dez 30, 2019 10:09:53 AM org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException

WARN: GenerationTarget encountered exception accepting command : Error executing DDL create table Cidade (codigo int8 not null, nome varchar(50) not null, estado_codigo int8 not null, primary key (codigo)) via JDBC Statement

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL create table Cidade (codigo int8 not null, nome varchar(50) not null, estado_codigo int8 not null, primary key (codigo)) via JDBC Statement

at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67)

at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlString(AbstractSchemaMigrator.java:559)

at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlStrings(AbstractSchemaMigrator.java:504)

at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.createTable(AbstractSchemaMigrator.java:277)

at org.hibernate.tool.schema.internal.GroupedSchemaMigratorImpl.performTablesMigration(GroupedSchemaMigratorImpl.java:71)

at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.performMigration(AbstractSchemaMigrator.java:207)

at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration(AbstractSchemaMigrator.java:114)

at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:183)

at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72)

at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:310)

at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:467)

Codigo da tabela cidade

package com.meson.sistemavendas.Domain;

import java.io.Serializable;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.JoinColumn;

import javax.persistence.ManyToOne;

/**
*

  • @author Dani
    
    */
    
    @SuppressWarnings(serial)
    
    @Entity
    
    public class Cidade implements Serializable{
    
    @Column(length = 50, nullable = false)
    
    private String nome;
    
    @ManyToOne
    
    @JoinColumn(nullable = false)
    
    private Estado estado;
    
    @GeneratedValue(strategy = GenerationType.AUTO)
    
    @Id
    
    private Long codigo;
    
    public Long getCodigo() {
    
    return codigo;
    
    }
    
    public void setCodigo(Long codigo) {
    
    this.codigo = codigo;
    
    }
    
    <a class="mention" href="/u/override">@Override</a>
    
    public String toString() {
    
    return String.format("%s[codigo=%d]", getClass().getSimpleName(), getCodigo());
    
    }
    
    public String getNome() {
    
    return nome;
    
    }
    
    public void setNome(String nome) {
    
    this.nome = nome;
    
    }
    
    public Estado getEstado() {
    
    return estado;
    
    }
    
    public void setEstado(Estado estado) {
    
    this.estado = estado;
    
    }
    
    }
    

~hibernate util

package com.meson.sistemavendas.util;

import java.sql.Connection;

import java.sql.SQLException;
import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.boot.registry.StandardServiceRegistryBuilder;

import org.hibernate.cfg.Configuration;

import org.hibernate.jdbc.ReturningWork;

import org.hibernate.service.ServiceRegistry;

import com.meson.sistemavendas.Domain.Cidade;
import com.meson.sistemavendas.Domain.Estado;

public class HibernateUtil {
private static SessionFactory fabricaDeSessoes = criarFabricaDeSessoes();

public static SessionFactory getFabricaDeSessoes() {
	return fabricaDeSessoes;
}

public static Connection getConexao(){
	Session sessao = fabricaDeSessoes.openSession();
	
	Connection conexao = sessao.doReturningWork(new ReturningWork<Connection>() {
		@Override
		public Connection execute(Connection conn) throws SQLException {
			return conn;
		}
	});
	
	return conexao;
}

private static SessionFactory criarFabricaDeSessoes() {
	try {
		Configuration configuracao = new Configuration().configure();
                    configuracao.addAnnotatedClass(Estado.class);
                  configuracao.addAnnotatedClass(Cidade.class);
		
		ServiceRegistry registro = new StandardServiceRegistryBuilder().applySettings(configuracao.getProperties()).build();
		
		SessionFactory fabrica = configuracao.buildSessionFactory(registro);
		
		return fabrica;
	} catch (Throwable ex) {
		System.err.println("A fábrica de sessões não pode ser criada." + ex);
		throw new ExceptionInInitializerError(ex);
	}
}

}

Hibernate cfg

<?xml version="1.0" encoding="UTF-8"?> org.postgresql.Driver postgres jdbc:postgresql://localhost:5432/sistema postgres org.hibernate.dialect.PostgreSQLDialect true false update
</session-factory>
D

fala que a relação cidade ja existe

D

erro quando executo a tela de cidades que era pra trazer a jcombobox populada

INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@3526a8ab] for (non-JTA) DDL execution was not in auto-commit mode; the Connection local transaction will be committed and the Connection will be set into auto-commit mode.

Hibernate: create table Cidade (codigo int8 not null, nome varchar(50) not null, estado_codigo int8 not null, primary key (codigo))

dez 30, 2019 10:21:40 AM org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException

WARN: GenerationTarget encountered exception accepting command : Error executing DDL create table Cidade (codigo int8 not null, nome varchar(50) not null, estado_codigo int8 not null, primary key (codigo)) via JDBC Statement

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL create table Cidade (codigo int8 not null, nome varchar(50) not null, estado_codigo int8 not null, primary key (codigo)) via JDBC Statement

at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67)

at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlString(AbstractSchemaMigrator.java:559)

at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlStrings(AbstractSchemaMigrator.java:504)

at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.createTable(AbstractSchemaMigrator.java:277)

at org.hibernate.tool.schema.internal.GroupedSchemaMigratorImpl.performTablesMigration(GroupedSchemaMigratorImpl.java:71)

at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.performMigration(AbstractSchemaMigrator.java:207)

at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration(AbstractSchemaMigrator.java:114)

at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:183)

at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72)

at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:310)

at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:467)

at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:708)

at com.meson.sistemavendas.util.HibernateUtil.criarFabricaDeSessoes(HibernateUtil.java:43)

at com.meson.sistemavendas.util.HibernateUtil.(HibernateUtil.java:16)

at com.meson.sistemavendas.Tela.TelaCidade.(TelaCidade.java:67)

at com.meson.sistemavendas.Tela.TelaCidade$1.run(TelaCidade.java:40)

at java.awt.event.InvocationEvent.dispatch(Unknown Source)

at java.awt.EventQueue.dispatchEventImpl(Unknown Source)

at java.awt.EventQueue.access$500(Unknown Source)

at java.awt.EventQueue$3.run(Unknown Source)

at java.awt.EventQueue$3.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.run(Unknown Source)

Caused by: org.postgresql.util.PSQLException: ERROR: relation cidade already exists

at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2198)

at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1927)

at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)

at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:562)

at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:406)

at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:398)

at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54)

 29 more
Hibernate: create table Estado (codigo int8 not null, nome varchar(50) not null, sigla varchar(2) not null, primary key (codigo))

dez 30, 2019 10:21:40 AM org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException

WARN: GenerationTarget encountered exception accepting command : Error executing DDL create table Estado (codigo int8 not null, nome varchar(50) not null, sigla varchar(2) not null, primary key (codigo)) via JDBC Statement

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL create table Estado (codigo int8 not null, nome varchar(50) not null, sigla varchar(2) not null, primary key (codigo)) via JDBC Statement

at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67)

at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlString(AbstractSchemaMigrator.java:559)

at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlStrings(AbstractSchemaMigrator.java:504)

at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.createTable(AbstractSchemaMigrator.java:277)

at org.hibernate.tool.schema.internal.GroupedSchemaMigratorImpl.performTablesMigration(GroupedSchemaMigratorImpl.java:71)

at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.performMigration(AbstractSchemaMigrator.java:207)

at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration(AbstractSchemaMigrator.java:114)

at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:183)

at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72)

at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:310)

at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:467)

at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:708)

at com.meson.sistemavendas.util.HibernateUtil.criarFabricaDeSessoes(HibernateUtil.java:43)

at com.meson.sistemavendas.util.HibernateUtil.(HibernateUtil.java:16)

at com.meson.sistemavendas.Tela.TelaCidade.(TelaCidade.java:67)

at com.meson.sistemavendas.Tela.TelaCidade$1.run(TelaCidade.java:40)

at java.awt.event.InvocationEvent.dispatch(Unknown Source)

at java.awt.EventQueue.dispatchEventImpl(Unknown Source)

at java.awt.EventQueue.access$500(Unknown Source)

at java.awt.EventQueue$3.run(Unknown Source)

at java.awt.EventQueue$3.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.run(Unknown Source)

Caused by: org.postgresql.util.PSQLException: ERROR: relation estado already exists

at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2198)

at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1927)

at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)

at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:562)

at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:406)

at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:398)

at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54)

 29 more
Hibernate: alter table Cidade add constraint FKqed4xf4didnaoj5gas05bjwd9 foreign key (estado_codigo) references Estado

dez 30, 2019 10:21:40 AM org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException

WARN: GenerationTarget encountered exception accepting command : Error executing DDL alter table Cidade add constraint FKqed4xf4didnaoj5gas05bjwd9 foreign key (estado_codigo) references Estado via JDBC Statement

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL alter table Cidade add constraint FKqed4xf4didnaoj5gas05bjwd9 foreign key (estado_codigo) references Estado via JDBC Statement

at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67)

at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlString(AbstractSchemaMigrator.java:559)

at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlStrings(AbstractSchemaMigrator.java:504)

at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applyForeignKeys(AbstractSchemaMigrator.java:433)

at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.performMigration(AbstractSchemaMigrator.java:249)

at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration(AbstractSchemaMigrator.java:114)

at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:183)

at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72)

at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:310)

at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:467)

at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:708)

at com.meson.sistemavendas.util.HibernateUtil.criarFabricaDeSessoes(HibernateUtil.java:43)

at com.meson.sistemavendas.util.HibernateUtil.(HibernateUtil.java:16)

at com.meson.sistemavendas.Tela.TelaCidade.(TelaCidade.java:67)

at com.meson.sistemavendas.Tela.TelaCidade$1.run(TelaCidade.java:40)

at java.awt.event.InvocationEvent.dispatch(Unknown Source)

at java.awt.EventQueue.dispatchEventImpl(Unknown Source)

at java.awt.EventQueue.access$500(Unknown Source)

at java.awt.EventQueue$3.run(Unknown Source)

at java.awt.EventQueue$3.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.run(Unknown Source)

Caused by: org.postgresql.util.PSQLException: ERROR: constraint fkqed4xf4didnaoj5gas05bjwd9 for relation cidade already exists

at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2198)

at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1927)

at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)

at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:562)

at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:406)

at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:398)

at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54)

 28 more
dez 30, 2019 10:21:40 AM org.hibernate.internal.SessionImpl createCriteria

WARN: HHH90000022: Hibernates legacy org.hibernate.Criteria API is deprecated; use the JPA javax.persistence.criteria.CriteriaQuery instead

Hibernate: select this_.codigo as codigo1_1_0_, this_.nome as nome2_1_0_, this_.sigla as sigla3_1_0_ from Estado this_

java.lang.ClassCastException: com.meson.sistemavendas.Domain.Estado cannot be cast to java.lang.String

at com.meson.sistemavendas.Tela.TelaCidade.(TelaCidade.java:70)

at com.meson.sistemavendas.Tela.TelaCidade$1.run(TelaCidade.java:40)

at java.awt.event.InvocationEvent.dispatch(Unknown Source)

at java.awt.EventQueue.dispatchEventImpl(Unknown Source)

at java.awt.EventQueue.access$500(Unknown Source)

at java.awt.EventQueue$3.run(Unknown Source)

at java.awt.EventQueue$3.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.run(Unknown Source)
D

acho que to quase la no combobox

JComboBox comboBox = new JComboBox();
		
			Criteria consulta = sessao.createCriteria(Estado.class);	
			consulta.addOrder(Order.asc("nome"));
			List<Estado> resultado = consulta.list();
			 for(Estado estado_ : resultado) {
				 comboBox.addItem(estado_);
	             }

ele esta jogando no combo estado codigo 27 nao joga o estado mas aparece o código ?

D

Resolvi o erro de salvar elementos agora só falta o combobox

L

Oi,

Quando você faz uso da variável estado_ dessa forma, significa que você está utilizando o método toString() deste objeto.

Provavelmente a classe Estado contem atributos privados dentro dela, e provavelmente você deve possuir algum método getEstado() que retorna o estado propriamente dito. Ou não?

comboBox.addItem(estado_.getEstado());

Tchauzin!

D

agora deu certo obrigado meu problema agora vai ser salvar os elementos do jcombobox kkkkkkkk

D

o salvar ta quase pronto ja rsrs agora so falta eu descobrir como salva o combobox no banco rs

btnSalvar.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e){//GEN-FIRST:event_jButton1ActionPerformed

// TODO add your handling code here:

Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();

Transaction transacao = null;

Cidade cidade = new Cidade();
try {
			                    cidade.setNome(textField.getText());
			                    Estado codigo = resultado.get(comboBox.getSelectedIndex());
						transacao = sessao.beginTransaction();
						sessao.save(cidade);
						transacao.commit();
					} catch (RuntimeException erro) {
						if (transacao != null) {
							transacao.rollback();
						}
						throw erro;
					} finally {
						sessao.close();
					}
			 }});
}

	}
D

Exception in thread “AWT-EventQueue-0” org.hibernate.PropertyValueException: not-null property references a null or transient value : com.meson.sistemavendas.Domain.Cidade.estado

Criado 27 de dezembro de 2019
Ultima resposta 30 de dez. de 2019
Respostas 64
Participantes 4