Ajuda Com Hibernate "Iniciante"

Pessoal comecei estudar hibernate ontem, estou com pequeno problema.

Está dando esse erro na compilação!!

Out 03, 2012 5:48:37 PM org.hibernate.annotations.common.Version
INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
Out 03, 2012 5:48:37 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.1.6.Final}
Out 03, 2012 5:48:37 PM org.hibernate.cfg.Environment
INFO: HHH000206: hibernate.properties not found
Out 03, 2012 5:48:37 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
Out 03, 2012 5:48:37 PM org.hibernate.cfg.Configuration configure
INFO: HHH000043: Configuring from resource: /hibernate.cfg.xml
Out 03, 2012 5:48:37 PM org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: HHH000040: Configuration resource: /hibernate.cfg.xml
Out 03, 2012 5:48:37 PM org.hibernate.internal.util.xml.DTDEntityResolver resolveEntity
WARN: HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
Out 03, 2012 5:48:37 PM org.hibernate.cfg.Configuration doConfigure
INFO: HHH000041: Configured SessionFactory: null
Out 03, 2012 5:48:38 PM org.hibernate.mapping.RootClass checkCompositeIdentifier
WARN: HHH000038: Composite-id class does not override equals(): aluno
Out 03, 2012 5:48:38 PM org.hibernate.mapping.RootClass checkCompositeIdentifier
WARN: HHH000039: Composite-id class does not override hashCode(): aluno
Exception in thread “main” org.hibernate.MappingException: Composite-id class must implement Serializable: aluno
at org.hibernate.mapping.RootClass.checkCompositeIdentifier(RootClass.java:290)
at org.hibernate.mapping.RootClass.validate(RootClass.java:279)
at org.hibernate.cfg.Configuration.validate(Configuration.java:1294)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1738)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1784)
at GravaAluno.main(GravaAluno.java:16)

//

XML para configuraçao

<?xml version="1.0" encoding="UTF-8"?>
  <property name ="connection.Driver_class"> org.postgresql.Driver</property>
  <property name ="connection.url">jdbc:postgresql://localhost/JavaHibernate </property>
  <property name = "connection.username"> postgres</property> 
  <property name = "connection.password">root</property>  
 
   <property name ="connection.pool_size">1</property>
  
   <property name = "dialect"> org.hibernate.dialect.PostgreSQLDialect</property>  
  
   <property name="show_sql">true</property>
   
  <mapping class="aluno"></mapping>

Abaixo segue As class, Utilizando Banco Postgresql, com todas as columun criadas.

Não me entenda mau… Você leu a mensagem de erro?

Vou destacar a parte principal:

O motivo do problema é este:

Exception in thread "main" org.hibernate.MappingException: Composite-id class must implement Serializable: aluno

Vejamos sua classe:

@Entity
@Table(name ="aluno")
public class aluno {


	private int alu_codigo;
	private String alu_nome;
	private String alu_cidade;
	private String alu_fone;
	private String alu_curso;
	
	@Id
	@Column(name= "alu_codigo")
	public int getAlu_codigo() {
		return alu_codigo;
	}
	
	public void setAlu_codigo(int alu_codigo) {
		this.alu_codigo = alu_codigo;
	}
	
	@Id
	@Column(name="alu_nome")
	public String getAlu_nome() {
		return alu_nome;
	}
	
	public void setAlu_nome(String alu_nome) {
		this.alu_nome = alu_nome;
	}
	
	@Id
	@Column(name="alu_cidade")
	public String getAlu_cidade() {
		return alu_cidade;
	}
	
	public void setAlu_cidade(String alu_cidade) {
		this.alu_cidade = alu_cidade;
	}
	
	@Id
	@Column(name="alu_fone")
	public String getAlu_fone() {
		return alu_fone;
	}
	
	public void setAlu_fone(String alu_fone) {
		this.alu_fone = alu_fone;
	}
	
	@Id
	@Column(name="alu_curso")
	public String getAlu_curso() {
		return alu_curso;
	}
	
	public void setAlu_curso(String alu_curso) {
		this.alu_curso = alu_curso;
	}
	
	
}

Realmente há um caso de “composite-id”, visto que voce anotou diversos campos com @Id. Não conheço sua regra de negócio, mas nao me parece razoável que TODOS os campos da sua tabela façam parte da PK. Não seria mais adequado definir um único campo para ser o @Id, como por exemplo o “alu_codigo”?

Aproveitando o gancho…não seria ruim um pequeno estudo das convenções Java (nome da classe iniciando com letra maiúscula, nome de variaveis em camelCase…)

Valeu, resolvir. era só tirar as ID, e deixar alu codigo com chave primaria.

Eu sou iniciante, estudo java a 2 meses. Eu conheço o padrão cameCase, na próxima ficarei mais atento.