Could not execute JDBC batch update

17 respostas
M

Galera estou tentando fazer a primeira aplicação usando hibernate, sempre faço as querys e tudo mais na unha, mas resolvi aderir a este framework.

esta dando este erro ai acima vou colar o codigo aqui pra facilitar

aqui a classe de gravar. acho que é onde esta todo o erro. Estou utilizando POSTGRES

import javax.swing.*;
import org.hibernate.*;
import org.hibernate.cfg.Configuration;

public class GravaAluno {

    public static void main(String[] args) {
        try {
            SessionFactory fabrica = new Configuration().configure().buildSessionFactory();
            Session sessao = fabrica.openSession();

            Aluno aluno = new Aluno();
            aluno.setAlu_codigo(1);
            aluno.setAlu_nome("Aluno da Silva coleção Set");
            aluno.setAlu_cidade("Sete");
            aluno.setAlu_fone("[telefone removido]");
            aluno.setAlu_curso("hibernate");
            Transaction tx_aluno = sessao.beginTransaction();
            sessao.save(aluno);
            tx_aluno.commit();
            sessao.close();
        } catch (Exception erro) {
            JOptionPane.showMessageDialog(null, "Erro na insersão : " + erro);
        }
        //Hibernate: insert into alunos (alu_nome, alu_cidade, alu_fone, alu_curso, alu_codigo) values (?, ?, ?, ?, ?)


    }
}

AGORA MEU ARQUIVO Aluno.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
    Paulo Manhani - Conectando com hibernate
    -->
<hibernate-mapping>
  <class name="Aluno" table="Alunos">
    <id column="alu_codigo" name="alu_codigo" type="int"/>
    <property name="alu_nome"/>
    <property name="alu_cidade"/>
    <property name="alu_fone"/>
    <property name="alu_curso"/>
  </class>
</hibernate-mapping>
e por ultimo o de configuração do hibernate
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class"> org.postgresql.Driver </property>
        <property name="hibernate.connection.url">jdbc:postgresql://localhost/hibernate</property>
        <property name="hibernate.connection.username">postgres</property>
        <property name="hibernate.connection.password">mysenha</property>
        <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
        <mapping resource="aluno.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

17 Respostas

A

cara,

poste o log de erro completo para o pessoal poder te ajudar.
Ja que vc está começando a estudar hibernate, pq vc não usa anotações muito mais facil de entender.

t+

M

run: 0 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.3.1.GA 16 [main] INFO org.hibernate.cfg.Environment - hibernate.properties not found 16 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist 16 [main] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling 47 [main] INFO org.hibernate.cfg.Configuration - configuring from resource: /hibernate.cfg.xml 47 [main] INFO org.hibernate.cfg.Configuration - Configuration resource: /hibernate.cfg.xml 94 [main] INFO org.hibernate.cfg.Configuration - Reading mappings from resource : aluno.hbm.xml 156 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: Aluno -> Alunos 172 [main] INFO org.hibernate.cfg.Configuration - Configured SessionFactory: null 203 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Using Hibernate built-in connection pool (not for production use!) 203 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Hibernate connection pool size: 20 203 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - autocommit mode: false 219 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - using driver: org.postgresql.Driver at URL: jdbc:postgresql://localhost/hibernate 219 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - connection properties: {user=postgres, password=****} 281 [main] INFO org.hibernate.cfg.SettingsFactory - RDBMS: PostgreSQL, version: 9.1.1 281 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC driver: PostgreSQL Native Driver, version: PostgreSQL 9.0 JDBC4 (build 801) 281 [main] INFO org.hibernate.dialect.Dialect - Using dialect: org.hibernate.dialect.PostgreSQLDialect 297 [main] INFO org.hibernate.transaction.TransactionFactoryFactory - Using default transaction strategy (direct JDBC transactions) 297 [main] INFO org.hibernate.transaction.TransactionManagerLookupFactory - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended) 297 [main] INFO org.hibernate.cfg.SettingsFactory - Automatic flush during beforeCompletion(): disabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - Automatic session close at end of transaction: disabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC batch size: 15 297 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC batch updates for versioned data: disabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - Scrollable result sets: enabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC3 getGeneratedKeys(): enabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - Connection release mode: auto 297 [main] INFO org.hibernate.cfg.SettingsFactory - Default batch fetch size: 1 297 [main] INFO org.hibernate.cfg.SettingsFactory - Generate SQL with comments: disabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - Order SQL updates by primary key: disabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - Order SQL inserts for batching: disabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory 297 [main] INFO org.hibernate.hql.ast.ASTQueryTranslatorFactory - Using ASTQueryTranslatorFactory 297 [main] INFO org.hibernate.cfg.SettingsFactory - Query language substitutions: {} 297 [main] INFO org.hibernate.cfg.SettingsFactory - JPA-QL strict compliance: disabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - Second-level cache: enabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - Query cache: disabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - Cache region factory : org.hibernate.cache.impl.NoCachingRegionFactory 297 [main] INFO org.hibernate.cfg.SettingsFactory - Optimize cache for minimal puts: disabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - Structured second-level cache entries: disabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - Statistics: disabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - Deleted entity synthetic identifier rollback: disabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - Default entity-mode: pojo 297 [main] INFO org.hibernate.cfg.SettingsFactory - Named query checking : enabled 328 [main] INFO org.hibernate.impl.SessionFactoryImpl - building session factory 421 [main] INFO org.hibernate.impl.SessionFactoryObjectFactory - Not binding factory to JNDI, no JNDI name configured 468 [main] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 0, SQLState: 42P01 468 [main] ERROR org.hibernate.util.JDBCExceptionReporter - Entrada em lote 0 insert into Alunos (alu_nome, alu_cidade, alu_fone, alu_curso, alu_codigo) values ('Aluno da Silva coleção Set', 'Sete', '[telefone removido]', 'hibernate', '1') foi abortada. Chame getNextException para ver a causa. 468 [main] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 0, SQLState: 42P01 468 [main] ERROR org.hibernate.util.JDBCExceptionReporter - ERRO: relação "alunos" não existe Posição: 13 468 [main] ERROR org.hibernate.event.def.AbstractFlushingEventListener - Could not synchronize database state with session org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167) at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321) at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50) at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027) at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:365) at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137) at GravaAluno.main(GravaAluno.java:25) Caused by: java.sql.BatchUpdateException: Entrada em lote 0 insert into Alunos (alu_nome, alu_cidade, alu_fone, alu_curso, alu_codigo) values ('Aluno da Silva coleção Set', 'Sete', '[telefone removido]', 'hibernate', '1') foi abortada. Chame getNextException para ver a causa. at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2598) at org.postgresql.core.v3.QueryExecutorImpl$1.handleError(QueryExecutorImpl.java:459) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1836) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:407) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2737) at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70) at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268) ... 8 more

ele ta acusando a linha do commit

A

cara,

vc tem certeza que a tabela Alunos existe, ve essa linha do seu erro

468 [main] ERROR org.hibernate.util.JDBCExceptionReporter - ERRO: relação "alunos" não existe

t+

H

Adiciona essa linha no seu arquivo de configurações:<property name="hibernate.hbm2ddl.auto">update</property>
Esse código irá criar/alterar os relacionamentos/tabelas do seu banco.

M

o erro continua olha o log, uma observação, ta dizendo na segunda linha ta dizendo que não encontrou hibernate.properties…eu não tenho mesmo este arquivo será isto?? alguém tem um modelo

0 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.3.1.GA 16 [main] INFO org.hibernate.cfg.Environment - hibernate.properties not found 16 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist 16 [main] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling 47 [main] INFO org.hibernate.cfg.Configuration - configuring from resource: /hibernate.cfg.xml 47 [main] INFO org.hibernate.cfg.Configuration - Configuration resource: /hibernate.cfg.xml 109 [main] INFO org.hibernate.cfg.Configuration - Reading mappings from resource : aluno.hbm.xml 156 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: Aluno -> Alunos 172 [main] INFO org.hibernate.cfg.Configuration - Configured SessionFactory: null 203 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Using Hibernate built-in connection pool (not for production use!) 203 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Hibernate connection pool size: 20 203 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - autocommit mode: false 234 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - using driver: org.postgresql.Driver at URL: jdbc:postgresql://localhost/hibernate 234 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - connection properties: {user=postgres, password=****} 281 [main] INFO org.hibernate.cfg.SettingsFactory - RDBMS: PostgreSQL, version: 9.1.1 281 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC driver: PostgreSQL Native Driver, version: PostgreSQL 9.0 JDBC4 (build 801) 297 [main] INFO org.hibernate.dialect.Dialect - Using dialect: org.hibernate.dialect.PostgreSQLDialect 297 [main] INFO org.hibernate.transaction.TransactionFactoryFactory - Using default transaction strategy (direct JDBC transactions) 297 [main] INFO org.hibernate.transaction.TransactionManagerLookupFactory - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended) 297 [main] INFO org.hibernate.cfg.SettingsFactory - Automatic flush during beforeCompletion(): disabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - Automatic session close at end of transaction: disabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC batch size: 15 297 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC batch updates for versioned data: disabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - Scrollable result sets: enabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC3 getGeneratedKeys(): enabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - Connection release mode: auto 297 [main] INFO org.hibernate.cfg.SettingsFactory - Default batch fetch size: 1 297 [main] INFO org.hibernate.cfg.SettingsFactory - Generate SQL with comments: disabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - Order SQL updates by primary key: disabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - Order SQL inserts for batching: disabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory 297 [main] INFO org.hibernate.hql.ast.ASTQueryTranslatorFactory - Using ASTQueryTranslatorFactory 297 [main] INFO org.hibernate.cfg.SettingsFactory - Query language substitutions: {} 297 [main] INFO org.hibernate.cfg.SettingsFactory - JPA-QL strict compliance: disabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - Second-level cache: enabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - Query cache: disabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - Cache region factory : org.hibernate.cache.impl.NoCachingRegionFactory 297 [main] INFO org.hibernate.cfg.SettingsFactory - Optimize cache for minimal puts: disabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - Structured second-level cache entries: disabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - Statistics: disabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - Deleted entity synthetic identifier rollback: disabled 297 [main] INFO org.hibernate.cfg.SettingsFactory - Default entity-mode: pojo 297 [main] INFO org.hibernate.cfg.SettingsFactory - Named query checking : enabled 328 [main] INFO org.hibernate.impl.SessionFactoryImpl - building session factory 421 [main] INFO org.hibernate.impl.SessionFactoryObjectFactory - Not binding factory to JNDI, no JNDI name configured 421 [main] INFO org.hibernate.tool.hbm2ddl.SchemaUpdate - Running hbm2ddl schema update 421 [main] INFO org.hibernate.tool.hbm2ddl.SchemaUpdate - fetching database metadata 437 [main] INFO org.hibernate.tool.hbm2ddl.SchemaUpdate - updating schema 484 [main] INFO org.hibernate.tool.hbm2ddl.TableMetadata - table found: public.alunos 484 [main] INFO org.hibernate.tool.hbm2ddl.TableMetadata - columns: [alu_fone, alu_cidade, alu_codigo, alu_nome, alu_curso] 484 [main] INFO org.hibernate.tool.hbm2ddl.TableMetadata - foreign keys: [] 484 [main] INFO org.hibernate.tool.hbm2ddl.TableMetadata - indexes: [alunos_pkey] 484 [main] INFO org.hibernate.tool.hbm2ddl.SchemaUpdate - schema update complete 546 [main] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 0, SQLState: 23505 546 [main] ERROR org.hibernate.util.JDBCExceptionReporter - Entrada em lote 0 insert into Alunos (alu_nome, alu_cidade, alu_fone, alu_curso, alu_codigo) values ('Aluno da Silva coleção Set', 'Sete', '[telefone removido]', 'hibernate', '1') foi abortada. Chame getNextException para ver a causa. 546 [main] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 0, SQLState: 23505 546 [main] ERROR org.hibernate.util.JDBCExceptionReporter - ERRO: duplicar valor da chave viola a restrição de unicidade "alunos_pkey" Detalhe: Chave (alu_codigo)=(1) já existe. 546 [main] ERROR org.hibernate.event.def.AbstractFlushingEventListener - Could not synchronize database state with session org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:94) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167) at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321) at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50) at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027) at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:365) at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137) at GravaAluno.main(GravaAluno.java:25) Caused by: java.sql.BatchUpdateException: Entrada em lote 0 insert into Alunos (alu_nome, alu_cidade, alu_fone, alu_curso, alu_codigo) values ('Aluno da Silva coleção Set', 'Sete', '[telefone removido]', 'hibernate', '1') foi abortada. Chame getNextException para ver a causa. at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2598) at org.postgresql.core.v3.QueryExecutorImpl$1.handleError(QueryExecutorImpl.java:459) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1836) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:407) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2737) at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70) at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)

A

cara,

agora deu outro erro,

546 [main] ERROR org.hibernate.util.JDBCExceptionReporter - ERRO: duplicar valor da chave viola a restrição de unicidade "alunos_pkey"  
  Detalhe: Chave (alu_codigo)=(1)  existe.

falando que já existe essa chave, pq vc nao utiliza alguma forma de auto incremento.

t+

M

alisson agora vc me surprendeu, estou utilizando no banco o codigo como serial, ou seja autoincremento, a tabela esta vazia por total…rsrsrs no mato sem cachorro…vou rodar o scripit de criação da tabela pra ver novamente

M

este é o scripit da tabela, uma questao, la na tabela o codigo do aluno é auto incremento, em rotina normal via sql eu não preciso setar ele pra incluir, o banco preenche os campos que eu mandar e acrescenta o ID… como funciona aqui no hibernate?? se eu comento a linha de incluir código ele nao entra e com o codigo ele disse que ja existe…

outra coisa pelo que vi a sequencia de coluna nao esta certo no hibernate - columns: [alu_fone, alu_cidade, alu_codigo, alu_nome, alu_curso]

CREATE TABLE "Alunos" ( alu_codigo serial NOT NULL, alu_nome character varying(100), alu_cidade character varying(100), alu_fone character varying(100), alu_curso character varying(100), CONSTRAINT "PK_ALUNO" PRIMARY KEY (alu_codigo ) ) WITH ( OIDS=FALSE ); ALTER TABLE "Alunos" OWNER TO postgres;

A

cara,

no postgres não tem auto incremente, vc tem que criar uma sequence, segue um exemplo

CREATE SEQUENCE hibernate_sequence
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 2760
  CACHE 1;
ALTER TABLE hibernate_sequence OWNER TO postgres;

e qdo vc for setar as propriedades do seu objeto, o id tem que ser nulo.

t+

M

olha o que aconteceu, consegui gravar, só que eu fui no banco e tirei o auto incremento, passando a variavel de serial para integer…
ai simplesmente funcionou…só que como eu faço pra fazer isto funcionar com a variavel SERIAL de autoincremento

A

seu banco é postgres ou mysql?
nao tenho certeza mais acho que auto incremente funciona so com integer.

t+

M

manhanijava:
olha o que aconteceu, consegui gravar, só que eu fui no banco e tirei o auto incremento, passando a variavel de serial para integer…
ai simplesmente funcionou…só que como eu faço pra fazer isto funcionar com a variavel SERIAL de autoincremento

amigao o tipo de variavel SERIAL, no postgres é auto incremento

M

manhanijava:
manhanijava:
olha o que aconteceu, consegui gravar, só que eu fui no banco e tirei o auto incremento, passando a variavel de serial para integer…
ai simplesmente funcionou…só que como eu faço pra fazer isto funcionar com a variavel SERIAL de autoincremento

amigao o tipo de variavel SERIAL, no postgres é auto incremento

não to conseguindo entender o por que de eu ter que setar a variavel alu_codigo.

por exemplo se eu fosse usar um sql eu não setaria o codigo somente as outras variaveis

A

eu não sabia que o tipo serial era auto incremente.

vc tem que seta-lo para null para o banco faz o incremente automatico.

da uma olhada neste link, ele pode te ajudar, http://stackoverflow.com/questions/2183932/hibernate-annotation-for-postgresql-serial-type

t+

M

alissonvla:
eu não sabia que o tipo serial era auto incremente.

vc tem que seta-lo para null para o banco faz o incremente automatico.

da uma olhada neste link, ele pode te ajudar, http://stackoverflow.com/questions/2183932/hibernate-annotation-for-postgresql-serial-type

t+

EU olhei o codigo, mas veja só, eu fui no banco de dados e setei o alu_codigo como null, mas assi que eu crio a primary key ele volta aser not null rsrs esta ta dificil…

mas valew muito obrigado pela atençao

A

rsrsrs
vc vai fazer isso no seu codigo, nao no banco, qdo tiver fazendo save.

t+

H

Se for o caso, faça como o alissonvla disse lá trás.

Crie uma Sequence, que seria melhor.

Aqui eu mostro como é feito: SequenceGenerator.

Criado 28 de novembro de 2011
Ultima resposta 28 de nov. de 2011
Respostas 17
Participantes 3