有两张表:
Emp:员工表的实体类
private int id;
private String name;
private String job;
private double sal;
private Date time;
private Dept dept;
映射文件; Emp.hbm.xml
<hibernate-mapping>
<class name="ling.entity.Emp" table="EMP">
<id name="id" column="EMPNO">
<!-- 主键的生成器 assigned:代表要自己选择生成的值-->
<generator class="assigned"></generator>
</id>
<property name="name" column="ENAME" type="string" not-null="true"></property>
<property name="job" column="JOB" type="string" not-null="true"></property>
<property name="sal" column="SAL" type="string" not-null="true"></property>
<property name="time" column="HIREDATE" type="string" not-null="true"></property>
<many-to-one name="dept" class="ling.entity.Dept" cascade="save-update">
<column name="deptNo"></column>
</many-to-one>
</class>
</hibernate-mapping>
Dept:部门表的实体类
private int deptNo;
private String deptName;
映射文件:
<hibernate-mapping>
<class name="ling.entity.Dept" table="DEPT">
<id name="deptNo" column="DEPTNO">
<!-- 主键的生成器 assigned:代表要自己选择生成的值-->
<generator class="assigned"></generator>
</id>
<property name="deptName" column="DEPTNAME" type="string" not-null="true"></property>
</class>
</hibernate-mapping>
Dao层查询所有的方法:
:
public List<Emp> emps() {
// TODO Auto-generated method stub
return super.getHibernateTemplate().find("from Emp") ;
}
网页中报错:
HTTP Status 500 - could not execute query; SQL [select emp0_.EMPNO as EMPNO0_, emp0_.ENAME as ENAME0_, emp0_.JOB as JOB0_, emp0_.SAL as SAL0_, emp0_.HIREDATE as HIREDATE0_, emp0_.deptNo as deptNo0_ from EMP emp0_]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query
java.sql.SQLException: ORA-00904: "EMP0_"."DEPTNO": 标识符无效
控制台输出查询语句:Hibernate: select emp0_.EMPNO as EMPNO0_, emp0_.ENAME as ENAME0_, emp0_.JOB as JOB0_, emp0_.SAL as SAL0_, emp0_.HIREDATE as HIREDATE0_, emp0_.deptNo as deptNo0_ from EMP emp0_
以上语句放在orcle数据库中同样报标识列无效
请帮忙看一下是哪里的问题 , 非常着急, 谢谢.
------解决思路----------------------
大哥 你人员信息表里都没有部门信息字段 你是通过部门表里的ID来关联的 但是你在人员信息表里没有部门ID 只有个部门实体 怎么能关联上? 应该这样:
private int id;
private String name;
private String job;
private double sal;
private Date time;
private int deptId;
private Dept dept;
xml:
<hibernate-mapping>
<class name="ling.entity.Emp" table="EMP">
<id name="id" column="EMPNO">
<!-- 主键的生成器 assigned:代表要自己选择生成的值-->
<generator class="assigned"></generator>
</id>
<property name="name" column="ENAME" type="string" not-null="true"></property>
<property name="job" column="JOB" type="string" not-null="true"></property>
<property name="sal" column="SAL" type="string" not-null="true"></property>
<property name="time" column="HIREDATE" type="string" not-null="true"></property>
<property name="deptId" column="DEPTID" type="string" insert="false" update="false"></property>
<many-to-one name="dept" class="ling.entity.Dept" cascade="save-update">
<column name="DEPTID"></column>
</many-to-one>
</class>
</hibernate-mapping>
------解决思路----------------------
?<many-to-one?name="dept"??class="ling.entity.Dept"?cascade="save-update" column="deptNo">?</many-to-one>
</many-to-one>
再有错call我。。。我一直在啊////