2017-02-25 13 views
0

我有2個pojo。一個pojo表示一個視圖,即我的Oracle數據庫中的V_EMPLOYEE。
查看V_EMPLOYEE:不存在具有給定標識符的行

+----------+----------+ 
| ID  | TEMP  | 
+----------+----------+ 
| 1  | 0  | 
| 2  | 1  | 
| 3  | 0  | 
| 4  | 1  | 
+----------+----------+ 

TEMP是類型的VARCHAR2(1)

的僱員POJO如下:

public class EmpPOJO { 
private int ID; 
private String Temp; 

//getters and setters 
} 

我的另一個POJO表示表corr_comp_emp:

+----------+----------+----------+ 
    | ID  | ID_COM | ID_EMP | 
    +----------+----------+----------+ 
    | 1  | 2  | 2  | 
    | 2  | 3  | 5  | 
    | 3  | 5  | 6  | 
    | 4  | 8  | 8  | 
    +----------+----------+----------+ 

pojo如下:

public class CorrComEmp { 
private int ID; 
private EmpPOJO Emp; 
private ComPojo com; 

//getters and setters 
} 

我使用得到CorrComEmp列表查詢是:

listE = session.createQuery("SELECT it FROM pojo.CorrComEmp as it, " + V_EMPLOYEE 
         + " as vue WHERE vue.Id = it.Emp").list(); 

每當我的項目打上面的代碼,它就會出現以下錯誤:

No row with the given identifier exists: 5, of class: pojo.EmpPOJO 

員工5存在於視圖V_EMPLOYEE中。我已經注意到,在將新屬性添加到Employee,TEMP後,我收到了此錯誤。 我已經嘗試通過休眠在corr_comp_emp表中插入日期,並且它可以正常工作。它只是檢索出現這個錯誤的數據。 任何想法我失蹤?自一週以來,我一直堅持這個概念。

+0

你的問題很混亂。您的查詢選擇一個未知的實體ComEmp,但是您說它應該返回一個List 。它使用未知的常量V_EMPLOYEE。沒有命名約定是受尊重的。請通過正確提供所有必要的詳細信息並選擇更好的命名來重新修正您的問題。例如,對於您的實體,「Employee」,「Company」和「Contract」有什麼問題?另外,你說ID 5的行存在,但你的表格截圖顯示它沒有。再次,非常混亂。 –

回答

-1

可能的原因是:

  1. 持久性 - 員工5中的數據不保留。數據 可能是由一個事務輸入的,並且不知何故不是 。但是如果另一個事務試圖在 另一個會話中檢索數據,則會出現此錯誤。
  2. 交易作出 通過Hibernate是越來越回滾
-1

我不知道的Java /休眠狀態,但就甲骨文而言,你的查詢有多個明顯的錯誤。

  1. 在爲表名使用別名時,不能使用as。所以你的查詢應該是這樣的
  2. 沒有列名爲it你在select子句中提到。
  3. pojo.ComEmpfrom子句不存在,因爲數據庫不知道什麼pojo.ComEmp是什麼。

您應該先在sqlplus/Oracle SQL Developer或任何其他客戶端工具中運行您的查詢,以驗證查詢是否正確。用戶硬編碼變量值以在適用的情況下運行查詢。

例如,查詢的最接近的工作版本將在下面。不知道你是否想加入任何其他專欄。

SELECT it.id FROM corr_comp_emp it 
    inner join V_EMPLOYEE vue 
on vue.Id = it.Id; 
+0

爲什麼選擇投票? – Utsav

相關問題