[hibernate]where clause is ambiguous 解决办法

使用Criteria方式查询,如果使用like字段,当关联的表里面有重复字段,则会报 where clause is ambiguous 异常
例如
假设 ModelA 中有一个关联ModelB,且两个Model中都有同样的字段 name,如果对name使用like方式查询,如下
Session session = HibernateManager.getSession();
String str = "aaaaa";
Criteria cri = session.createCriteria(ModelA.class);
cri.add(Expression.or(Expression.sql("name like '%"+str+"%'"), Expression.sql("address like '%"+str+"%'")));
return cri.list();

则会报: ERROR JDBCExceptionReporter.java Column 'name' in where clause is ambiguous

解决办法:
在 name前加上'this_.'就可以了,告诉mysql你使用 ModelA所对应的表
cri.add(Expression.or(Expression.sql("this_.name like '%"+str+"%'"), Expression.sql("this_.address like '%"+str+"%'")));

注:如果你想使用 ModelB所对应的表,把配置文件中的show_sql打开
<property name="show_sql">true</property>
看看ModelB 所使用的别名,填到name前面就可以
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值