项目为:status2 ,spring hibernate
在查询数据的时候报了orm.hibernate3.HibernateSystemException: Unknown entity这个错误,看了一下好像是不知道有这个实体, 于是我就懵逼了,实体都已经建好了,怎么会没有实体呢,这个问题困扰了我俩个小时,为了以后再遇到这个错误能够迅速的解决,在这里做个笔记,不然时间长了都忘了经历过这么个异常了。下面是我的实体
/**
* * Created by suhui on 2017/9/20
* * <p/>
* * Copyright (c) 2017-2017
* * Apache License
* * Version 2.0, January 2004
* * http://www.apache.org/licenses/
*
*/
package com.hr.csim.entity.ctcst.archives;
import org.hibernate.annotations.Entity;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "PX_DA_UPLOAD_INFO")
public class UploadInfromation {
private String id;
private String dataCategory;//资料类别 ,个人资料 班级资料
private String type;//类型 如:培训详情,鉴定详情
private String batchNo;//班级编号==属于哪个班级
private String fileName;//重命名之后的文件名称
private String uploadName;//文件原始名称
private String fileId;//文件的唯一标识
private String path;//文件全路径
private String filePath;//文件所在路径
private String jgNo; //上传文件机构编号
private String idNumber; //个人身份证
@Id
@GeneratedValue(generator = "upload_info_uuid")
@GenericGenerator(name = "upload_info_uuid", strategy = "uuid")
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getIdNumber() {
return idNumber;
}
public void setIdNumber(String idNumber) {
this.idNumber = idNumber;
}
public String getFileId() {
return fileId;
}
public void setFileId(String fileId) {
this.fileId = fileId;
}
public String getFilePath() {
return filePath;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
public String getDataCategory() {
return dataCategory;
}
public void setDataCategory(String dataCategory) {
this.dataCategory = dataCategory;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getBatchNo() {
return batchNo;
}
public void setBatchNo(String batchNo) {
this.batchNo = batchNo;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getUploadName() {
return uploadName;
}
public void setUploadName(String uploadName) {
this.uploadName = uploadName;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public String getJgNo() {
return jgNo;
}
public void setJgNo(String jgNo) {
this.jgNo = jgNo;
}
}
org.springframework.orm.hibernate3.HibernateSystemException: Unknown entity: com.hr.csim.entity.ctcst.archives.UploadInfromation; nested exception is org.hibernate.MappingException: Unknown entity: com.hr.csim.entity.ctcst.archives.UploadInfromation
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:679)
at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411)
at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
at org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:683)
at com.hr.csim.pub.base.dao.BaseDAO.save(BaseDAO.java:128)
at com.hr.csim.service.ctcst.archives.ArchivesService.uploadInformations(ArchivesService.java:376)
at com.hr.csim.action.ctcst.ArchivesAction.uploadInformation(ArchivesAction.java:117)
at com.hr.csim.action.ctcst.ArchivesAction$$FastClassByCGLIB$$122716d7.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:688)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:80)
经过仔细的排查,终于找到了原因,由于我的开发工具设置的自动导包,工具在导包的时候导错了包,@Entity这个注解有俩个包分别是:
import org.hibernate.annotations.Entity;
import javax.persistence.Entity;
由于工具自动导了annotations这个包,所以才找不到实体,正确的包应该是persistence这个包。