2013-03-19 64 views
1

似乎無法弄清楚爲什麼它看不到我的namedquery。希望有人能在它提供一些線索:
這裏是代碼:指定的查詢不知道:byShipmentNumber

@Data 
@Entity 
@Table(name = "shipments") 
    @NamedNativeQueries({ 
     @NamedNativeQuery(name = "byShipmentNumber", query = "select S.SHIPMENTS_ID,S.SHIPMENT_NUMBER,S.COMPANIES_ID, S.COMPANIES_ID_3,(min(sil.IMPORT_PCT)) MIN_PCT,(max(sil.IMPORT_PCT)) MAX_PCT," 
     + "(case when ((nvl((SUM(case when (nvl(SIL.IMPORT_PCT,0)>0) then 1 end)),0)) < count(nvl(SIL.IMPORT_PCT,0))) then 0 else 1 end) Status from SHIPMENTS s " 
     + "join shipment_invoices si on s.shipments_id = si.shipments_id" 
     + "join SHIPMENT_INVOICE_LINES sil on SI.SHIPMENT_INVOICES_ID = sil.SHIPMENT_INVOICES_ID" 
     + "where s.SHIPMENT_NUMBER = :shipmentNumber" 
     + "and companies_id=23351763" 
     + "group by S.SHIPMENTS_ID,S.SHIPMENT_NUMBER,S.COMPANIES_ID, S.COMPANIES_ID_3;", 
     resultClass = Shipments.class) 
    }) 
    public class Shipments implements Serializable { 


     @Id 
     @Column(name = "shipments_id") 
     private Long id; 
     @Column(name = "shipment_number") 
     private String shipmentNumber; 
     @Column(name = "companies_id") 
     private String billTo; 
     @Column(name = "companies_id_3") 
     private String issuer; 
     @Column(name = "status") 
     private String status; 
     @Column(name = "min_pct") 
     private String minImportCost; 
     @Column(name = "max_pct") 
     private String maxImportCost; 


     public static List<Shipments> getShipmentByShipmentNumber(Session session, String shipmentNumber) { 
      Query query = session.getNamedQuery("byShipmentNumber"); 
      query = query.setString("shipmentNumber", shipmentNumber); 
      return query.list(); 
     } 

這裏是錯誤:

SEVERE: Servlet.service() for servlet [appServlet] in context with path [/ImportCost.spring] threw exception [Request processing failed; nested exception is org.hibernate.MappingException: Named query not known: byShipmentNumber] with root cause 
org.hibernate.MappingException: Named query not known: byShipmentNumber 

回答

0

是一個安裝錯誤,看起來不是編程錯誤。
在我的db.xml(在spring下)我掃描了錯誤的文件夾。

bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
     <property name="dataSource" ref="datasource" /> 
     <property name="packagesToScan" value="**dk.lector.bestinfoII.importcost.domain**" 
....(other properties).... 
     </property> 
    </bean> 

    <tx:annotation-driven transaction-manager="transactionManager"/> 
    <context:component-scan base-package="**dk.lector.bestinfoII.importcost.domain**"/> 

**身邊,我不得不鏈接錯誤的文件夾

0

我想這是因爲你的類沒有被標註爲@Entity,因此將其忽略由JPA。

+0

這是對不起,我沒有粘貼部分: - / – 2013-03-20 08:14:43