表 ZSupeTrace 有两个主键 TRACE_ID,DEPART_ID
定义了实体类 ZSupeTrace   
变量 private ZSupeTraceId id;
@EmbeddedId
@AttributeOverrides({
@AttributeOverride(name = "traceId", column = @Column(name = "TRACE_ID", nullable = false, precision = 10, scale = 0)),
@AttributeOverride(name = "departId", column = @Column(name = "DEPART_ID", nullable = false, length = 10)) })
public ZSupeTraceId getId() {
return this.id;
} public void setId(ZSupeTraceId id) {
this.id = id;
}
指向ZSupeTraceId实体类
private Integer traceId;
private String departId;在查询的时候
hql=" from ZSupeTrace where 1=1";
hql+=" and departId="+gzry+"";为什么总是出现下面的错误
ERROR JDBCExceptionReporter:78 - ORA-00904: "DEPARTID": 标识符无效
Caused by: java.sql.SQLException: ORA-00904: "DEPARTID": 标识符无效

解决方案 »

  1.   

    很奇怪的是,我把departId改成depart_id就可以
    hql=" from ZSupeTrace where 1=1";
    hql+=" and depart_id="+gzry+"";
      

  2.   

    除了你  没人会使POJO的属性 与 DB中的字段不一致。所以也就没人研究这问题。
      

  3.   

    语句:hql=" from ZSupeTrace where 1=1";
    hql+=" and departId="+gzry+"";改成:hql=" from ZSupeTrace zt where 1=1";
    hql+=" and zt.departId='"+gzry+"'";