hql在mysql中查询出错

今天遇到一个非常奇怪的问题,mysql数据库,hibernate注解配置表,
from Wxyhdtb where zt=1 and wxyh.id=1 order by wxyh.id
测试发现在where条件中wxyh.id会出错,Unknown column 'wxyh.id' in 'where clause',但是只在order by wxyh.id却没有问题 ,请问这是什么情况?
注:以前用oracle 就不会出现这种情况

2个回答

from Wxyhdtb where zt=1 and wxyh.id=1 order by wxyh.id

HQL语句面向的是对象bean. 虽然看起来很想SQL,但其实是对象。 因此对于你的这条HQL语句。 Wxyhdtb应对应类,同时where 后的字段对应的应该是Wxyhdtb对象的属性。看你的HQL where条件,Wxyhdtb 应该 和 wxyh 对应的对想是有关联的。 wxyh应该对应另一个表的。

针对

from Wxyhdtb where zt=1 and wxyh.id=1 order by wxyh.id

这条HQL语句,你的实体bean可能如下结构

 @Entity
@Table(name = "tb_a")
class Wxyhdtb{
@Id
  Long id;
    Integer zt ;
     @OneToOne // 也有可能是 ManyToOne
  Wxyh wxyh;
}

@
Entity
@Table(name = "tb_b")
class Wxyh {
@Id
    Long id;
}
oxcow
oxcow 回复lifewell1: 那就不明觉厉了!debug看下打印日志了!是否还有其他错误导致了这个错误的发生。
4 年多之前 回复
u013835778
lifewell1 回复oxcow: 我分开测试的,2条语句,一条是只用order by 一条只用where
4 年多之前 回复
oxcow
oxcow 回复lifewell1: order by没有错 是指针对你这条语句没有报错,还是你针对 from Wxyhdtb order by wxyh.id 这个语句?如果是针对你这条语句话,应该是还没解析到order by就已经出错了!
4 年多之前 回复
u013835778
lifewell1 是这样的,一对一映射,但不知道为什么会报错, order by 这样写就没问题
4 年多之前 回复

是这样的,一对一映射,但不知道为什么会报错

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问