【发布时间】:2017-02-25 10:15:01
【问题描述】:
我有 2 个 pojo。一个 pojo 代表我的 Oracle 数据库中的一个视图 V_EMPLOYEE。
查看 V_EMPLOYEE:
+----------+----------+
| ID | TEMP |
+----------+----------+
| 1 | 0 |
| 2 | 1 |
| 3 | 0 |
| 4 | 1 |
+----------+----------+
TEMP 的类型为 VARCHAR2(1)
Employee 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 表中插入日期,它可以正常工作。它只是检索给出此错误的数据。 知道我缺少什么吗?一周以来,我一直被这个问题困扰。
【问题讨论】:
-
你的问题很混乱。您的查询选择了一个未知实体 ComEmp,但您说它应该返回 List
。它使用未知常量 V_EMPLOYEE。不遵守命名约定。请通过正确提供所有 eccessary 详细信息并选择更好的命名来重新处理您的问题。例如,您的实体的 Employee、Company和Contract有什么问题?此外,您说 ID 为 5 的行存在,但您的表格屏幕截图显示它不存在。再次,非常混乱。