VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 893|回复: 9

hibernate用Criteria做子查询的问题,高分求救高人!

[复制链接]

1

主题

7

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-3-18 13:00:01 | 显示全部楼层 |阅读模式
我的user里面有两个set属性,role和station,当我要查包含role和station属性的user时出现错误如下
Caused by: java.sql.SQLException: ORA-00918: column ambiguously defined

看了sql语句,知道错误的原因,但是不知道怎么解决!

问题就出在as EmpID上!(有两个as EmpID)
我是用Criteria来查询的,没有sql和hsql的东西,所以不知道怎么更改别名,使其不冲突,哪位高人可以帮忙呀!!???

select  * from ( select this_.id as id2_2_, this_.DelFlag as DelFlag2_2_, this_.EmpNm as EmpNm2_2_, this_.EmpNum as EmpNum2_2_, this_.LastUpdater as LastUpda5_2_2_, this_.LastUpdTm as LastUpdTm2_2_, this_.Mobile as Mobile2_2_, this_.Pswd as Pswd2_2_, this_.Remark as Remark2_2_, this_.Status as Status2_2_, role4_.EmpID as EmpID1, role2_.id as RoleID, role2_.id as id8_0_, role2_.Role as Role8_0_, station6_.EmpID as EmpID, station1_.id as StaID, station1_.id as id6_1_, station1_.DelFlag as DelFlag6_1_, station1_.StaCode as StaCode6_1_, station1_.StaNm as StaNm6_1_ from tblUser this_, tblUserRole role4_, tblRole role2_, tblUserStation station6_, tblStation station1_ where this_.id=role4_.EmpID and role4_.RoleID=role2_.id and this_.id=station6_.EmpID and station6_.StaID=station1_.id and station1_.id in (8, 9) and role2_.id in (1) and (1=1) and this_.DelFlag<>6 and this_.id<>2 order by this_.id asc )  where rownum <= 10
回复

使用道具 举报

1

主题

7

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-6-23 20:45:01 | 显示全部楼层
各位兄弟姐妹谁能帮忙,在下深表感谢!!!
回复

使用道具 举报

0

主题

39

帖子

23.00

积分

新手上路

Rank: 1

积分
23.00
发表于 2020-6-30 22:00:01 | 显示全部楼层
Criteria查询代码是什么?
回复

使用道具 举报

1

主题

7

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-7-8 11:15:01 | 显示全部楼层
Criteria userCriteria = session.createCriteria(User.class);
Criteria stationCriteria = userCriteria.createCriteria("station");
Criteria roleCriteria = userCriteria.createCriteria("role");
回复

使用道具 举报

0

主题

5

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-7-18 12:30:01 | 显示全部楼层
select  * from (

select
this_.id as id2_2_,
this_.DelFlag as DelFlag2_2_,
this_.EmpNm as EmpNm2_2_,
this_.EmpNum as EmpNum2_2_,
this_.LastUpdater as LastUpda5_2_2_,
this_.LastUpdTm as LastUpdTm2_2_,
this_.Mobile as Mobile2_2_,
this_.Pswd as Pswd2_2_,
this_.Remark as Remark2_2_,
this_.Status as Status2_2_,
role4_.EmpID as EmpID1, (as EmpID1)
role2_.id as RoleID,
role2_.id as id8_0_,
role2_.Role as Role8_0_,
station6_.EmpID as EmpID, (as EmpID)
station1_.id as StaID,
station1_.id as id6_1_,
station1_.DelFlag as DelFlag6_1_,
station1_.StaCode as StaCode6_1_,
station1_.StaNm as StaNm6_1_

from tblUser this_, tblUserRole role4_, tblRole role2_, tblUserStation station6_, tblStation station1_

where this_.id=role4_.EmpID and role4_.RoleID=role2_.id and this_.id=station6_.EmpID and station6_.StaID=station1_.id and station1_.id in (8, 9) and role2_.id in (1) and (1=1) and this_.DelFlag<>6 and this_.id<>2

order by this_.id asc )


where rownum <= 10

sql中的 as 就是作为别名的意思。
回复

使用道具 举报

1

主题

7

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-7-18 15:30:01 | 显示全部楼层
这位兄弟没明白我的意思,SQL是HIBERNATE自己生成的!
回复

使用道具 举报

1

主题

7

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-7-18 16:15:01 | 显示全部楼层
as EmpID1是我测试SQL改的,HIBERNATE生成的都是as EmpID(两个!)
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-7-18 17:45:02 | 显示全部楼层
映射发出来看看
回复

使用道具 举报

1

主题

7

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-7-23 16:45:02 | 显示全部楼层
<set
            name="role"
            table="tblUserRole"
            lazy="false"
            cascade="none"
            sort="unsorted"
        >

            <key
                column="EmpID"
            >
            </key>

            <many-to-many
                class="com.fedex.qilin.sps.admin.entity.Role"
                column="RoleID"
                outer-join="auto"
             />

        </set>

<set
            name="station"
            table="tblUserStation"
            lazy="false"
            cascade="none"
            sort="unsorted"
        >

            <key
                column="'EmpID'"
            >
            </key>

            <many-to-many
                class="com.fedex.qilin.sps.admin.entity.Station"
                column="StaID"
                outer-join="auto"
             />

        </set>
回复

使用道具 举报

1

主题

7

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-7-25 08:15:01 | 显示全部楼层
can somebody help me please?或者使用HSQL查询应该怎么把这种关系查出来
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表