@ManyToOne@OneToMany双向关联之java.sql.SQLSyntaxErrorException:ORA-00904:标识符无效
前几天用hibernate映射数据库产生了实体类,其中两个表叫左dept和emp,以下是它的实体类,我从数据库表联系发现他们之间是@OnetoMany @ManyToOne的双向关联,所以我就使用了关联,我的框架是SSH框架我使用的是hibernateTemplate让它自动生成代码,我在测试列出方法的时候报错:java.sql.SQLSyntaxErrorException: ORA-00904: "THIS_"."DEPT_DNO": 标识符无效hibernateTemplate自动生成的Oracle sql语句如下:Hibernate:
select
this_.empno as empno1_1_,
this_.dept_dno as dept8_1_1_,
from
Emp this_,
Dept dept2_
where
this_.dept_dno=dept2_.dno(+)
14:53:53,534 WARN org.hibernate.util.JDBCExceptionReporter:100 - SQL Error: 904, SQLState: 42000
14:53:53,535 ERROR org.hibernate.util.JDBCExceptionReporter:101 - ORA-00904: "THIS_"."DEPT_DNO": 标识符无效
以下是数据库表
Emp
序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明
1 EMPNO VARCHAR2 40 是 否 PK
2 DNO VARCHAR2 40 是 FK dept(dno)
Dept
序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明
1 DNO VARCHAR2 20 是 否 PK
Dept.java
@Entity
public class Dept {
// Fields
private String dno;
private Set<Emp> emps = new HashSet<Emp>();
@OneToMany(mappedBy="dept",cascade={CascadeType.ALL})
public Set<Emp> getEmps() {
return emps;
}
public void setEmps(Set<Emp> emps) {
this.emps = emps;
}
@Id
public String getDno() {
return this.dno;
}
public void setDno(String dno) {
this.dno = dno;
}
Emp.java
Entity
public class Emp implements {
// Fields
private String empno;
private Dept dept;
@Id
public String getEmpno() {
return this.empno;
}
public void setEmpno(String empno) {
this.empno = empno;
}
@ManyToOne
public Dept getDept() {
return this.dept;
}
public void setDept(Dept dept) {
this.dept = dept;
}
[ 本帖最后由 lovemm 于 2011-4-29 15:16 编辑 ]