QBC查询关联表困惑

问题描述

A表:User表 private Long id;/** * 用户名 */private String name;/** * 登陆密码 */private String password ;/** * 创建时间 */private String createtime;B 表:WorkLog表 private Long id;/** * 上传用户 */private CUser user;/** * 工作类型 */private String workTypeId;/** * 创建时间 */private String createtime;A,B两表关联,SQL写法:select t.* from c_worklog t where to_char(to_date(trim(t.createtime),'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd') = '2011-04-12' and t.userid in (select c.id from c_user c where c.name ='2377');可以执行成功QBC写法:public List search(Map map, int firstresult, int maxresults) {// TODO Auto-generated method stubList list1 = null; try { Criteria criteria = this.getSession().createCriteria(CWorkLog.class); Iterator it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry pairs = (Map.Entry) it.next(); if(pairs.getKey().equals("createtime")){ criteria = criteria.add( Restrictions .sqlRestriction( " to_char(to_date(trim(createtime),'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd') = ?", pairs.getValue().toString().trim(), Hibernate.STRING)); }else if (pairs.getKey().equals("name")) { criteria = criteria.createCriteria("user").add(Restrictions.eq("name", pairs.getValue() .toString())); } } list1 =criteria.setFirstResult( (firstresult - 1) * maxresults).setMaxResults(maxresults).list(); } catch (Exception e) { e.printStackTrace(); } return list;}QBC执行时候单个查询例如:进行createtime或者name查询都可以,但是两个合并查询就出错:ORA-00918: 未明确定义列

解决方案

首先ORA-00918: 未明确定义列说明了这个SQL语句有问题。在SQL语句中由于多表关联或子查询视图的原因导致有两个及以上的字段的名称重复。所以SQL语句无法确定该选择那个字段作为最终的列。。既然你用Hibernate,那么将最终的生成的SQL语句拿到其他工具中去查看下就明白了Good Luck!

时间: 2024-09-16 08:28:22

QBC查询关联表困惑的相关文章

sql oracle数据库关联表查询

问题描述 sql oracle数据库关联表查询 现在有一个教师表(教师号 教师名) 课程号(教师号 课程号 课程名) 教室表(教师号 课程号 教室号 教室名) 想显示所有教室的教师名和课程名. 就是想问这种关联的查询语句 排除表中一些矛盾的存在哈 谢谢 解决方案 select b.教师名,c.课程名 from 教室表 a LEFT JOIN 教师表 b ON a.教师号=b.教师号 LEFT JOIN 课程表 c ON 教师表 b ON a.教师号=c.教师号 这个才是对的,刚刚没看清楚写错了.

Mybatid关联表查询

Mybatid关联表查询 一.一对一关联  1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系. 1 CREATE TABLE teacher( 2 t_id INT PRIMARY KEY AUTO_INCREMENT, 3 t_name VARCHAR(20) 4 ); 5 CREATE TABLE class( 6 c_id INT PRIMARY KEY

mybatis-MyBatis关联查询,查不到关联表的内容

问题描述 MyBatis关联查询,查不到关联表的内容 解决方案 Mybatis实现关联表查询mybatis-实现关联表查询MyBatis实现关联表查询 解决方案二: 单把sql拿出来运行看能不能查出数据.如果可以看一下你的日志有没有报错

关于oracle关联表查询的sql语句

问题描述 关于oracle关联表查询的sql语句 现在两张表,分别是表A,表B. 表A: ID CONTENT STARTDATE ENDDATE 1 测试内容1 2014/6/1 2014/6/15 2 测试内容2 2014/5/25 2014/6/30 3 测试内容3 2014/6/8 2014/7/1 4 测试内容4 2014/6/10 2014/6/30 表B: ID A_ID CONTENT MDATE 1 2 测试1 2014/6/5 2 2 测试3 2014/5/3 3 4 测试2

MyBatis学习总结(五)——实现关联表查询

一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系. 按 Ctrl+C 复制代码 CREATE TABLE teacher( t_id INT PRIMARY KEY AUTO_INCREMENT, t_name VARCHAR(20) ); CREATE TABLE class( c_id INT PRIMARY KEY AUTO_INCREM

MyBatis学习教程(五)-实现关联表查询方法详解_java

一.一对一关联  1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系. CREATE TABLE teacher( t_id INT PRIMARY KEY AUTO_INCREMENT, t_name VARCHAR() ); CREATE TABLE class( c_id INT PRIMARY KEY AUTO_INCREMENT, c_name VAR

MyBatis 实现关联表查询

一.一对一关联  1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系. 1 CREATE TABLE teacher( 2 t_id INT PRIMARY KEY AUTO_INCREMENT, 3 t_name VARCHAR(20) 4 ); 5 CREATE TABLE class( 6 c_id INT PRIMARY KEY AUTO_INCREME

小谈Hibernate中的HQL与QBC查询

最早接触Hibernate是在2004年,当时怀着忐忑和不安的心情来学习这门技术.经过这几年的使用和研 究,也积累了一定的经验,下面就HQL和QBC查询来谈一下我从工作中得到的一些总结. 本文不会讲什么是Hibernate.什么是ORM.更不会谈怎样使用HQL与QBC.本文的目的是让大家对平常 使用最多,也是最广泛的与数据库打交道的两种方式,有一个新的认识. 恩,如果你还不知道Hibernate,大象建议你先去学一下再来看本文,如果你已经是这方面的高手,大 可以关掉浏览器,千万不要因为本人的愚见

查询-消息表 如何获取消息表和消息状态

问题描述 消息表 如何获取消息表和消息状态 消息表 MSG-INFO IDTITLEISALL(是否发送给全部)消息关联表 MSG-USER IDMSGIDUSERIDISREAD消息可以发送给全部用户和指定用户,发送给指定用户时,添加数据到消息关联表,发送给全部用户时,不添加.在用户阅读后添加. 请问如何查询到指定用户的所有消息记录以及阅读状态.用户还需要查询消息状态.查询消息阅读状态的时候,因为发送给全部.无法查询到消息阅读记录. 解决方案 Http状态消息HTTP 状态消息HTTP 状态消