Pessoal, tudo bom? Sou iniciante em desenvolvimento Java e mais ainda com o Hibernate, e estou apanhando um pouco para fazer as coisas funcionarem aqui… não fui eu que fiz esta estrutura, então não posso fugir muito dela (pois existem outras classes que dependem dela).
Seguinte, eu tenho uma classe mapeada com a seguinte estrutura:
Classe Aluno:
package br.edu.ufsj.dcomp.requerimentosDicon.models;import javax.persistence.*;
@javax.persistence.Entity @Table(name=“alunos”) public class Aluno extends Entity {@Column(name="MATRICULA") private String matricula; @Column(name="CPF") private String cpf; public void setCpf(String cpf) { this.cpf = cpf; } public String getCpf() { return cpf; } public void setMatricula(String matricula) { this.matricula = matricula; } public String getMatricula() { return matricula; }}
Classe Entity (que é herdada por Aluno):
package br.edu.ufsj.dcomp.requerimentosDicon.models;import javax.persistence.GeneratedValue; import <a href="http://javax.persistence.Id">javax.persistence.Id</a>; import javax.persistence.MappedSuperclass;@MappedSuperclass
public class Entity {@Id @GeneratedValue private Long id; public void setId(Long id) { this.id = id; } public Long getId() { return id; } @Override public boolean equals(Object obj) { if (obj == null) { return false; } if (this == obj) { return true; } if (getClass() != obj.getClass()) { return false; } final Entity other = (Entity) obj; if (id != other.id && (id == null || !id.equals(other.id))) { return false; } return true; } @Override public int hashCode() { int hash = 7; hash = 17 * hash + (this.getId() != null ? this.getId().hashCode() : 0); return hash; }}
Aluno Repository:
package br.edu.ufsj.dcomp.requerimentosDicon.repositories;import java.util.List;
import br.edu.ufsj.dcomp.requerimentosDicon.models.Aluno;
public interface AlunoRepository {
/*
* Delete the methods you don’t want to expose
*/void create(Aluno entity); Aluno update(Aluno entity); void destroy(Aluno entity); Aluno find(Long id); List<Aluno> findAll();}
AlunoRepositoryImpl
package br.edu.ufsj.dcomp.requerimentosDicon.repositories;import javax.persistence.EntityManager;
import br.com.caelum.vraptor.ioc.Component;
import br.edu.ufsj.dcomp.requerimentosDicon.models.Aluno;@Component public class AlunoRepositoryImpl extends Repository<Aluno, Long> implements AlunoRepository {AlunoRepositoryImpl(EntityManager entityManager) { super(entityManager); }}
Acontece que, para esta classe, eu não queria usar ‘id’ como a chave primária… gostaria de usar ‘matricula’ como tal. Fiz algumas tentativas aqui, como parar de estender a classe Entity e fazer as annotations direto na classe Aluno, mas foram todas frustradas… eu estava recebendo um http error 503 quando tentava acessar no servidor…
Enfim, alguém tem alguma ideia de quais modificações eu deveria fazer pra conseguir usar ‘matricula’ como chave primária? Se precisarem de mais detalhes, é só me pedir… desculpem o post corrido, é que estou meio sem tempo aqui agora, mas depois consigo mandar mais detalhes, se for preciso.
Agradeço desde já (: