2012-12-10 44 views
2

在我的實體類我有以下的,要求其返回SYS_REFCURSOR重度:org.hibernate.MappingException:命名查詢不知道:

@Entity 
    @javax.persistence.NamedNativeQuery(name = "getEmp", 
    query = "{ ? = call getemployees }", resultClass = Employees.class, hints = { 
    @javax.persistence.QueryHint(name = "org.hibernate.callable", value = "true") }) 
    @Table(name = "EMPLOYEES") 
    public class Employees { 
在DAO

和Oracle函數我有

@Inject 
    private SessionFactory sessionFactory; 

    @Override 
    public List<Employees> getEmployees() { 

     List query = new ArrayList<Employees>(); 
     try{ 
     query = sessionFactory.getCurrentSession() 
       .getNamedQuery("getEmp").list(); 
     } 
     catch(Exception e){ 
      System.out.println("exception "+e.getMessage()); 
      e.printStackTrace(); 
     } 
     return query; 
    } 

但是當我運行我的應用程序,我收到以下異常

例外命名查詢不知道:getEmp SEVERE:org.hibernate.MappingException:命名查詢未知:getEmp at org.hibernate.internal.AbstractSessionImpl.getNamedQuery(AbstractSessionImpl.java:149) at org.hibernate.internal.SessionImpl.getNamedQuery(SessionImpl.java:1257 ) 在net.test.employees.dao.EmployeesDAO.getEmployees(EmployeesDAO.java:34) 在net.test.employees.service.EmployeesService.getEmployees(EmployeesService.java:24)

我怎樣才能解決這個問題?任何幫助是非常可觀的。

回答

2

我已通過在applicationContext.xml中添加以下內容來解決該問題。

<property name="annotatedClasses"> 
      <list> 
      <value>net.test.model.Employees</value> 
      </list> 
      </property>