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
加载的依赖项是:
当您有一个
@Id
存在时(您必须有,所以确实看不出删除它的意义),您的异常(关于Table.indexes)显然有一个您没有发布的原因异常。它很可能找不到该注释方法(JPA2.1方法IIRC),因为您有一个支持JPA2.0的JPA实现,并且在类路径中有一个JPA2.1 jar,反之亦然。发布原因异常将澄清哪些异常应该为您指明正确的方向您可以发布完整的堆栈跟踪吗?另外,您确定表ciudadano中有一个名为ID的列与数字整数类型匹配吗?