org.hibernate.AnnotationException:未为实体com.ubosque.modelo.Ciudadano指定标识符

org.hibernate.AnnotationException:未为实体com.ubosque.modelo.Ciudadano指定标识符,hibernate,jpa,hibernate-annotations,Hibernate,Jpa,Hibernate Annotations,我得到这个错误: org.hibernate.AnnotationException: No identifier specified for entity: com.ubosque.modelo.Ciudadano 我的班级: @Entity @Table(name="ciudadano") public class Ciudadano implements java.io.Serializable { private static final long serialVersionUID

我得到这个错误:

org.hibernate.AnnotationException:
No identifier specified for entity: com.ubosque.modelo.Ciudadano
我的班级:

@Entity
@Table(name="ciudadano")
public class Ciudadano implements java.io.Serializable {


private static final long serialVersionUID = 1L;

private int id;
private String nombre;
private String apellido;
@Column(name="fecha_nac")
private Date fechaNac;
@Column(name="lugar_nac")
private String lugarNac;
private String direccion;
private String telefono;
@Column(name="estado_civil")
private String estadoCivil;
private String email;
@Column(name="desc_perfil_prof")
private String descPerfilProf;

// setters & getters ...
我知道这个错误是因为没有
@Id
注释,但是如果我将
@Id
添加到Id变量,当我部署这个错误时会出现:

javax.servlet.ServletException:
javax.persistence.Table.indexes()[Ljavax/persistence/Index;
只有当我删除
@Id
注释时,此错误才会消失,因此任何建议都将不胜感激

我的项目是用
Maven 3
完成的,通过
pom
加载的依赖项是:

  • mysql-connector-java-5.0.8
  • hibernate-core-4.3.9.Final

  • 当您有一个
    @Id
    存在时(您必须有,所以确实看不出删除它的意义),您的异常(关于Table.indexes)显然有一个您没有发布的原因异常。它很可能找不到该注释方法(JPA2.1方法IIRC),因为您有一个支持JPA2.0的JPA实现,并且在类路径中有一个JPA2.1 jar,反之亦然。发布原因异常将澄清哪些异常应该为您指明正确的方向

    您可以发布完整的堆栈跟踪吗?另外,您确定表ciudadano中有一个名为ID的列与数字整数类型匹配吗?