永发信息网

一个两表外键的HQL查询该怎么写?请高手指教!

答案:2  悬赏:50  手机版
解决时间 2021-08-13 16:35
  • 提问者网友:蓝琪梦莎
  • 2021-08-13 08:11

两个表一个商品表和一个商品分类表
商品表有商品分类表的一个外键,商品分类表有自身内部有一个外键关系
--商品表,如下:
create table goods
(
goodsId int primary key identity,
goodsClassId int foreign key references goodsClass(goodsClassId),
。。。。
)

--商品分类表
create table goodsClass
(
goodsClassId int primary key identity,
goodsClassUpLevel int not null foreign key references goodsClass(goodsClassId),
。。。。
)

奇怪的是用hibernate生成的bean中没有goodsClassUpLevel而是一个private Set goodsClasses = new HashSet(0);
所以在DAO中用HQL想要查询出某个分类下子分类的所有商品老是出错!
我用来查询的HQL语句是:
Query query = session.createQuery("from Goods g where g.goodsClass.goodsClassId = some (select g.goodsClass.goodsClassId from g.goodsClass where g.goodsClass.goodsClassUpLevel="+classId+" or g.goodsClass.goodsClassId="+classId+")");

请高手帮个忙解决一下

最佳答案
  • 五星知识达人网友:洒脱疯子
  • 2021-08-13 09:12
你好哦楼主~
很高兴看到你的问题。
但是又很遗憾到现在还没有人回答你的问题。也可能你现在已经在别的地方找到了答案,那就得恭喜你啦。
可能是你问的问题有些专业了,没人会。或者别人没有遇到或者接触过你的问题,所以帮不了你。建议你去问题的相关论坛去求助,那里的人通常比较多,也会比较热心,能快点帮你解决问题。
希望我的回答能够帮到你!
祝你好运。。
全部回答
  • 1楼网友:思契十里
  • 2021-08-13 09:40

因为两个实体间是一对多的关系。 所以在一方里面 使用set来放多方的对象

另外 some关键字前面 应该是 in 吧 不能用=

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯