2011-12-29 82 views
0

無法查看GAE上Hibernate查詢獲取字段的值。無法在GAE上查看Hibernate查詢獲取字段的值

Query query = session.createSQLQuery("select s.id,e.firstName, e.middleName, e.lastName, es.title as empStatusTitle,e.transportMode as trModeId," + 
     " tr.title as trMode" + 
     " from SecurityPrincipals as s " + 
     " left join Employee as e on e.userId=s.id " +     
     " left join EmployeeStatus as es on e.employeeStatus = es.id " +   
     " left join TransportationModes as tr on e.transportMode = tr.id " +      
     " where s.id= :userId").setResultTransformer(new AliasToBeanResultTransformer(EmployeeDTO.class)); 

query.setParameter("userId", userId); 

當我打電話employeeDTO.getTrMode(),employeeDTO.getEmpStatusTitle正確並在當地machine.But正常運行得到了所有值,當我試圖在GAE上部署的價值沒有在view.jsf得到,但它在本地運行時有。我在EmployeeDTO.java中有所有這些的getter和setter。所有其他像firstName,middleName,lastName都沒有問題。

我employeeView.jsf是:

<h:outputText value="Transport Mode" /> 
<h:outputText id="transportMode" value="#{employeeView.employeeDTO.trMode}" style="font-weight:bold" /> 

<h:outputText value="Employee Status" /> 
<h:outputText id="employeeStatus" value="#{employeeView.employeeDTO.empStatusTitle}" style="font-weight:bold" /> 
+0

那麼,你有相同的數據在你的本地數據庫和GAE數據庫?如果記錄DTO的值會發生什麼?它們是否出現在日誌中?如果是這樣,這將是一個問題與您的JSF代碼。 – 2011-12-29 07:04:32

+0

當我試圖打印值System.out.println(「EMPLOYEE STATUS:CURRENT:」+ employeeDTO.getEmployeeStatusdto()+ employeeDTO.getEmpStatusTitle());'時,它在第一次分別變爲0,null。但在再次運行時獲得原始價值。爲什麼這麼發生? – NaaN 2011-12-29 07:17:09

回答

0

由於它們都工作在本地,那麼你的代碼和查詢可能是罰款。而且由於它在GAE上不起作用,所以可能有些環境不同。數據庫不同或者沒有正確配置。您應該添加一些錯誤檢查代碼以確保查詢實際上正在工作。

+0

實際上,其中的值是數據庫,我認爲配置是正確的。當我嘗試打印值System.out.println(「EMPLOYEE STATUS:CURRENT:」+ employeeDTO.getEmployeeStatusdto()+ employeeDTO.getEmpStatusTitle());'時,它在第一次分別變爲0,null。但在再次運行時獲得原始價值。爲什麼這麼發生? – NaaN 2011-12-29 07:43:23

+0

我會在Hibernate中打開log4j DEBUG跟蹤來查看它實際正在做什麼以及數據庫返回的內容。 – 2011-12-29 07:45:00