Outro problema com Hibernate

10 respostas
xxmayconxx

Erro ao tentar deletar, se ao deletar tiver só item ao ser deletado, ele não da erro, se tiver dois ou mais aparece isso:org.hibernate.jdbc.BatchedTooManyRowsAffectedException: Batch update returned unexpected row count from update [0]; actual row count: 3; expected: 1

meu xml ta assim

<?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.username">root</property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.connection.url">jdbc:mysql://localhost/casa</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<mapping class="pack.Link"/>
</session-factory>
</hibernate-configuration>

e minha classe que executa ta assim:

public static void main(String[]args)
	{
		
		 
		 AnnotationConfiguration configuration = new AnnotationConfiguration();
		 configuration.configure();
		
		 SessionFactory factory = configuration.buildSessionFactory();
		 Session session = factory.openSession();
		 
		 
		 Transaction tx = session.beginTransaction();
		 Link link = new Link();
		 link.setNome("fera");
		 session.delete(link);
		 tx.commit();
		 
		
	}

alguem sabe como resolve isso?Não estou usando o hbm.xml antes que perguntem isso, estou tendo problemas com ele ainda, mas pretendo usa-lo

10 Respostas

P

então mostra o código dessa classe Link ae…

rodrigocolasso

Você não esta especificando uma id somente no seu objeto link então ele ira excluir toda a tabela, uma operação que, pelo jeito, não pode ser feita.

O correto seria você buscar o quer do banco, preencher seu objeto e depois deletar ele.

xxmayconxx

A link não tem nada de mais, só tem getteres e setteres e a notação @Entity e @Id,mais nada.

rodrigocolasso

Então você tem que pelo menos preencher o id para o hibernate saber qual deletar

xxmayconxx

Humm, certo, mas então o hibernate não funciona corretamente com apensa uma coluna sem o id?Se que ter chave primária e auto incremento sempre ao se trabalhar com o hibernate?

jcmird

Você precisar ter ao menos uma chave primária para a sua tabela e o hibernate necessita disso. Até mesmo quando se utiilza uma VIEW com hibernate é necessário declarar uma coluna com anotação @Id.

E se tratando de banco de dados não é uma boa prática criar uma tabela sem ter chave primária, nesses casos recomenda-se utilizar a PK como auto incremento.

Abraços,

rodrigocolasso

jcmird:
Você precisar ter ao menos uma chave primária para a sua tabela e o hibernate necessita disso. Até mesmo quando se utiilza uma VIEW com hibernate é necessário declarar uma coluna com anotação @Id.

E se tratando de banco de dados não é uma boa prática criar uma tabela sem ter chave primária, nesses casos recomenda-se utilizar a PK como auto incremento.

Abraços,

Exatamente

xxmayconxx

A ta, não sabia dessa, sabe dizer no site do hibernate onde tem na documentação que fala sobre isso?

xxmayconxx

Vou modificar minha tabela então,colocar uma coluna id, valeu pela dica

rodrigocolasso

Isso não é só do Hibernate, mas para qualquer banco de dados …

Criado 22 de julho de 2011
Ultima resposta 25 de jul. de 2011
Respostas 10
Participantes 4