@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 java.io.Serializable {
// 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 编辑 ]
搜索更多相关主题的帖子:
sql语句 数据库
----------------解决方案--------------------------------------------------------
怎么没人回复我啊,不是我的提问太难了吧
----------------解决方案--------------------------------------------------------
你把那表Emp列名DNO改成dept_dno就可以了!!!
----------------解决方案--------------------------------------------------------
但我的Oracle数据库表根本就没这字段啊,我数据库字段只有数据dept的dno主键,数据emp的dno外键,根本就没有这个dept_dno啊,再说我是跟着数据库做事的不可以随便改动数据库表的
----------------解决方案--------------------------------------------------------