浏览 2695 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-07-06
最后修改:2011-06-21
例如 假设 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前面就可以 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |