Problema com hibernate 3.5

Ola pessoal,

Estou com o seguinte problema: Quando estava usando a versao anterior do hibernate dava tudo certo agora fui a tualizar para a 3.5 aparece alguns erros, então gostaria de saber se alguem ja passou por esse problema e poderia me dizer o que fazer para resolvê-lo.

exception

og4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
Exception in thread “main” java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1830)
at org.hibernate.cfg.AnnotationBinder.processIdPropertiesIfNotAlready(AnnotationBinder.java:762)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:726)
at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:636)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:359)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1377)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954)
at br.com.caelum.vraptor.exoclinica.testes.AdicaoDeAnimal.main(AdicaoDeAnimal.java:15)

minhas classes:

import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name=“cliente”)
public class Cliente {

@Id
@GeneratedValue
@Column(name="cod_cliente")
private Long cliente;

private String nome_cli;
private String endereco_cli;
private String telefone_cli;
private long cep_cli;
private String email_cli;

@OneToMany(mappedBy="cliente")	
private List<Animal> animais;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name=“animal”)
public class Animal {

@Id
@GeneratedValue
@Column(name="cod_animal")
private Long animal;
private String nome_ani;
private int idade_ani;
private int sexo_animal;

@ManyToOne
@JoinColumn(name="cod_cliente")
private Cliente cliente;

Classes de teste

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;

import br.com.caelum.vraptor.exoclinica.modelo.Animal;

public class AdicaoDeAnimal {
public static void main(String[] args){
AnnotationConfiguration configuration = new AnnotationConfiguration();
configuration.configure();

	SessionFactory factory = configuration.buildSessionFactory();
	Session session = factory.openSession();
	
	Animal animal = new Animal();
	animal.setNome_ani("cachorro");
	//animal.setCliente(null);
	animal.setIdade_ani(12);
	animal.setSexo_animal(1);
	
	Transaction tx = session.beginTransaction();
	session.save(animal);
	tx.commit();
}

}

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;

import br.com.caelum.vraptor.exoclinica.modelo.Cliente;

public class AdicaoDeCliente {

public static void main(String[] args){
	AnnotationConfiguration configuration = new AnnotationConfiguration();
	configuration.configure();
	
	SessionFactory factory = configuration.buildSessionFactory();
	Session session = factory.openSession();
	
	Cliente cliente = new Cliente();
	cliente.setNome_cli("Constancio");
	cliente.setEmail_cli("constanciobgn@yahoo.com.br");
	cliente.setCep_cli(64015610);
	cliente.setEndereco_cli("Cristo Rei");
	cliente.setTelefone_cli("8821-3278");
	cliente.setAnimais(null);
	
	Transaction tx = session.beginTransaction();
	session.save(cliente);
	tx.commit();		
}

}

import java.util.ArrayList;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;

import br.com.caelum.vraptor.exoclinica.modelo.Animal;
import br.com.caelum.vraptor.exoclinica.modelo.Cliente;

public class AdicaoDeClienteEAnimal {

	public static void main(String[] args){
		
		AnnotationConfiguration configuration = new AnnotationConfiguration();
		configuration.configure();
		
		SessionFactory factory = configuration.buildSessionFactory();
		Session session = factory.openSession();
		
		Cliente cliente = new Cliente();
		cliente.setNome_cli("Constancio");
		cliente.setEmail_cli("constanciobgn@yahoo.com.br");
		cliente.setCep_cli(64015610);
		cliente.setEndereco_cli("Cristo Rei");
		cliente.setTelefone_cli("8821-3278");
		
		Animal animal = new Animal();
		animal.setNome_ani("cachorro");
		animal.setIdade_ani(12);
		animal.setSexo_animal(1);
		animal.setCliente(cliente);
		
		Animal animal1 = new Animal();
		animal1.setNome_ani("gato");
		animal1.setIdade_ani(190);
		animal1.setSexo_animal(2);
		animal1.setCliente(cliente);
		
		cliente.setAnimais(new ArrayList<Animal>());
		cliente.getAnimais().add(animal);
		cliente.getAnimais().add(animal1);
		
		Transaction tx = session.beginTransaction();
		session.save(cliente);
		tx.commit();
	}

}

arquivo hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
    <!-- Configuração da conexão com o banco MySQL e dialeto -->
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="connection.url">jdbc:mysql://localhost/exoclinica</property>
    <property name="connection.username">root</property>
    <property name="connection.password">root</property>
    <property name="current_session_context_class">thread</property>         
	
	<!-- Configurações de debug -->
    <property name="show_sql">true</property>
	<property name="format_sql">true</property>
	<property name="generate_statistics">true</property>
	<property name="use_sql_comments">true</property>
	<property name="hbm2ddl.auto">update</property>
    
	<!-- Mapeando classes -->
    <mapping class = "br.com.caelum.vraptor.exoclinica.modelo.Cliente" />
    <mapping class = "br.com.caelum.vraptor.exoclinica.modelo.Animal" />       
    
</session-factory>

pode formatar o code?

Bem, de cara veja seu relacionamento oneTomany.

Código formatado e com algumas alterações, só que ainda nada.

1 - Classe Cliente

import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name = "cliente")
public class Cliente {

	@Id
	@GeneratedValue
	@Column(name = "cod_cliente")
	private Long cliente;

	private String nome_cli;
	private String endereco_cli;
	private String telefone_cli;
	private long cep_cli;
	private String email_cli;

	@OneToMany(targetEntity = Animal.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "equipamento")
	private List<Animal> animais;
2 - Classe Animal

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name="animal")
public class Animal {

	@Id
	@GeneratedValue
	@Column(name="cod_animal")
	private Long animal;
	private String nome_ani;
	private int idade_ani;
	private int sexo_animal;
	
	@ManyToOne
	@JoinColumn(name="cod_cliente")
	private Cliente cliente;

Parece que o problema é com orphanRemoval que deveria fazer parte da anotação @OneToMany. Uma forma que vi foi aqui http://www.guj.com.br/posts/list/206032.java só que se eu tento colocar assim

@OneToMany(targetEntity = Animal.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "equipamento", orphanRemoval=true) ele não reconhece o orphanRemoval.

Exception:

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
	at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1830)
	at org.hibernate.cfg.AnnotationBinder.processIdPropertiesIfNotAlready(AnnotationBinder.java:762)
	at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:726)
	at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:636)
	at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:359)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1377)
	at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954)
	at br.com.caelum.vraptor.exoclinica.testes.AdicaoDeCliente.main(AdicaoDeCliente.java:16)

Alguma idéia do que seja?

Só uma correção a primeira classe está assim:


   1. import java.util.List;  
   2.   
   3. import javax.persistence.CascadeType;  
   4. import javax.persistence.Column;  
   5. import javax.persistence.Entity;  
   6. import javax.persistence.FetchType;  
   7. import javax.persistence.GeneratedValue;  
   8. import javax.persistence.Id;  
   9. import javax.persistence.OneToMany;  
  10. import javax.persistence.Table;  
  11.   
  12. @Entity  
  13. @Table(name = "cliente")  
  14. public class Cliente {  
  15.   
  16.     @Id  
  17.     @GeneratedValue  
  18.     @Column(name = "cod_cliente")  
  19.     private Long cliente;  
  20.   
  21.     private String nome_cli;  
  22.     private String endereco_cli;  
  23.     private String telefone_cli;  
  24.     private long cep_cli;  
  25.     private String email_cli;  
  26.   
  27.     @OneToMany(targetEntity = Animal.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "cliente")  
  28.     private List<Animal> animais;