Unknown entity (Hibernate的findById方法参数必须加上包名)

使用Hibernate的findById(java.lang.Integer id)方法

Code:
  1. public Requestnote findById(java.lang.Integer id) { 
  2.     try {  
  3.         Requestnote instance = (Requestnote) getSession().get(  
  4.                 "Requestnote", id);  
  5.         return instance;  
  6.     } catch (RuntimeException re) {  
  7.         log.error("get failed", re);  
  8.         throw re;  
  9.     }  
  10. }  

 

报异常:

org.hibernate.MappingException: Unknown entity:Requestnote

网上百度,结果是因为findById()方法中实体类参数要带上包名。Requestnote要带上包名com.XXX.XXX写成com.XXX.XXX.Requestnote 就好了。

Code:
  1. public Requestnote findById(java.lang.Integer id) {  
  2.     try {  
  3.         Requestnote instance = (Requestnote) getSession().get(  
  4.                 "com.XXX.XXX.Requestnote", id);  
  5.         return instance;  
  6.     } catch (RuntimeException re) {  
  7.         log.error("get failed", re);  
  8.         throw re;  
  9.     }  
  10. }  

下面是我参考的网站:

http://tieba.baidu.com/f?kz=545576481

http://hi.baidu.com/five824/blog/item/02664cd02171dfdf562c842c.html

________________________________________________________________________________

 

通过ProductDAO 查询时出现异常 
Exception in thread "main" org.hibernate.MappingException: Unknown entity: Product 
at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:514) 
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:66) 
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:862) 
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:799) 
at com.ydq.DAO.ProductDAO.findById(ProductDAO.java:65) 
at com.ydq.test.Test.main(Test.java:10) 

进过测试用productDAO.findByName("pen"); 没有错误 
找了半天发现是ProductDAO里的findById 方法有问题.有问题的代码是:try { 
            Product instance = (Product) getSession() 
                    .get("Product", id); 
            return instance; 
        } catch (RuntimeException re) { 
            log.error("get failed", re); 
            throw re; 
        } 
因该改为 
try { 
            Product instance = (Product) getSession() 
                    .get("com.ydq.model.Product", id); 
            return instance; 
        } catch (RuntimeException re) { 
            log.error("get failed", re); 
            throw re; 
        } 
就是参数必须加上包名,其他方法不需要加,findById却要加

你可能感兴趣的:(java)