前几天用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(+)以下是数据库表
Emp序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明
1 EMPNO VARCHAR2 40 是 否 PK
2 DNO VARCHAR2 40 是 FK dept(dno)
Dept序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明
1 DNO VARCHAR2 20 是 否 PKDept.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;
}
@OneToMany(mappedBy="emp")
public Set<EmpRole> getEmpRoles() {
return empRoles;
}
public void setEmpRoles(Set<EmpRole> empRoles) {
this.empRoles = empRoles;
}
错误是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(+)以下是数据库表
Emp序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明
1 EMPNO VARCHAR2 40 是 否 PK
2 DNO VARCHAR2 40 是 FK dept(dno)
Dept序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明
1 DNO VARCHAR2 20 是 否 PKDept.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;
}
@OneToMany(mappedBy="emp")
public Set<EmpRole> getEmpRoles() {
return empRoles;
}
public void setEmpRoles(Set<EmpRole> empRoles) {
this.empRoles = empRoles;
}
解决方案 »
- 请问在vb中的byte s=&H1在java中怎么实现?
- jsp出现空指针,报错处竟然是在<%处,请高手指点!!
- java异常求助(急)
- DynaActionForm问题
- 请问像下面的qq文件上传组件怎么做的,使用java做?谢谢
- MyEclipse中的struts标签老是提示unknow tag
- 关于java调用批处理文件的问题。在线等!急!
- 高分请教,做医院系统,客户端用C++Builder,服务端用Java+Oracle数据库.需要哪些技术??来者说两句有分。
- 江湖救急,高手出手啊!!!帮助解决JAVA RMI 的异常问题!!!
- j2ee tourial中的第一个例子?
- myeclipse就是比eclipse jee好用,操蛋的eclipse jee, 改变类和配置居然不知道
- 字符串转换成对象
@JoinColumn(name = "dno")
public Dept getDept() {
return this.dept;
}
@JoinColumn(name = "XXX")
public Dept getDept() {
return this.dept;
}
public Set<EmpRole> getEmpRoles() {
return empRoles;
}
2. 在imp和Service层都没事,但回到Action中就无法注入到List中,是不是报错了session colsed!!
2. 在imp和Service层都没事,但回到Action中就无法注入到List中,是不是报错了session colsed!!
报错句子是ognl.MethodFailedException: Method "setHiredate" failed for object com.yi.dto.Emp@6fcbee [java.lang.NoSuchMethodException: setHiredate([Ljava.lang.String;)]和ognl.MethodFailedException: Method "setSal" failed for object com.yi.dto.Emp@6fcbee [java.lang.NoSuchMethodException: setSal([Ljava.lang.String;)],我的实体类这两个字段是 private Date hiredate;
private double sal;
所以我的实体类变量是 private Date hiredate;
private double sal;
public Date getHiredate() {
return this.hiredate;
} public void setHiredate(Date hiredate) {
this.hiredate = hiredate;
} public double getSal() {
return this.sal;
} public void setSal(double sal) {
this.sal = sal;
}
若是的话,上面的注解配置中缺少一些属性