項目爲: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這個包。