关于Hql语句,这条语句为什么查不出数据

hql = "from A a where a.timeDate <= "+time+" and a.name not in (select b.name from B b)";
super.findTopByHql(hql, 20);
这条语句有没有问题啊,为什么查不到数据

hql

5个回答

检查下日期有没有引号,是否合法

最好是使用参数
hql = "from A a where a.timeDate <= :time and a.name not in (select b.name from B b)";
String[] params = { "time" };
Object[] args = { time };
,,,

看下你的time数据类型和格式是否一致,然后在控制台打印出sql语句,在数据库执行一下,结果是否一样

meng20166
乐古 改成这个试试,你的格式不对
4 年多之前 回复
meng20166
乐古 hql = "from A a where a.timeDate <= '"+time+"' and a.name not in (select b.name from B b)";
4 年多之前 回复
meng20166
乐古 在控制台能打印出sql?
4 年多之前 回复
lpjhn41822
lpjhn41822 time是String类型的,这条语句能在数据库执行,但是后台执行不了,查出来就没数据
4 年多之前 回复
lpjhn41822
lpjhn41822 time是String类型的,这条语句能在数据库执行,但是后台执行不了,查出来就没数据
4 年多之前 回复

后台不能执行,,数据库不能执行,,没这回事吧

u013318686
冷月寒刃 342
大约 2 年之前 回复

hql = "from A a where a.timeDate <= todate('"+time+",'yyyy-mm-dd hh:mi:ss') and a.name not in (select b.name from B b)";

 timeDate <= to_date('" + time + "','yyyy-MM-dd') 
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Hibernate 内连接查询 查不出数据 数据库能查出

//客户实体类 public class Customer { private Long cust_id; private String cust_name; private String cust_source; private String cust_industry; private String cust_level; private String cust_linkman; private String cust_phone; private String cust_mobile; //使用set集合,表达一对多关系 一个客户有很多个联系人 private Set<LinkMan> linkMens = new HashSet<LinkMan>(); public Long getCust_id() { return cust_id; } public void setCust_id(Long cust_id) { this.cust_id = cust_id; } public String getCust_name() { return cust_name; } public void setCust_name(String cust_name) { this.cust_name = cust_name; } public String getCust_source() { return cust_source; } public void setCust_source(String cust_source) { this.cust_source = cust_source; } public String getCust_industry() { return cust_industry; } public void setCust_industry(String cust_industry) { this.cust_industry = cust_industry; } public String getCust_level() { return cust_level; } public void setCust_level(String cust_level) { this.cust_level = cust_level; } public String getCust_linkman() { return cust_linkman; } public void setCust_linkman(String cust_linkman) { this.cust_linkman = cust_linkman; } public String getCust_phone() { return cust_phone; } public void setCust_phone(String cust_phone) { this.cust_phone = cust_phone; } public String getCust_mobile() { return cust_mobile; } public void setCust_mobile(String cust_mobile) { this.cust_mobile = cust_mobile; } public Set<LinkMan> getLinkMens() { return linkMens; } public void setLinkMens(Set<LinkMan> linkMens) { this.linkMens = linkMens; } @Override public String toString() { return "Customer [cust_id=" + cust_id + ", cust_name=" + cust_name + "]"; } } //客户类配置hibernate映射文件 <hibernate-mapping package="com.jm.domain"> <class name="Customer" table="cst_customer"> <id name="cust_id" column="cust_id" type="long"> <generator class="native"></generator> </id> <property name="cust_name" column="cust_name" type="java.lang.String"></property> <property name="cust_source" column="cust_source" type="java.lang.String"></property> <property name="cust_industry" column="cust_industry" type="java.lang.String"></property> <property name="cust_level" column="cust_level" type="java.lang.String"></property> <property name="cust_linkman" column="cust_linkman" type="java.lang.String"></property> <property name="cust_phone" column="cust_phone" type="java.lang.String"></property> <property name="cust_mobile" column="cust_mobile" type="java.lang.String"></property> <set name="linkMens" cascade="save-update"> <key column="lkm_cust_id"></key> <one-to-many class="LinkMan"/> </set> </class> </hibernate-mapping> package com.jm.domain; //联系人实体 public class LinkMan { private Long lkm_id; private Character lkm_gender; private String lkm_name; private String lkm_phone; private String lkm_email; private String lkm_qq; private String lkm_mobile; private String lkm_memo; private String lkm_position; //表达多对一关系很多个联系人属于一个客户 private Customer customer; public Long getLkm_id() { return lkm_id; } public void setLkm_id(Long lkm_id) { this.lkm_id = lkm_id; } public Character getLkm_gender() { return lkm_gender; } public void setLkm_gender(Character lkm_gender) { this.lkm_gender = lkm_gender; } public String getLkm_name() { return lkm_name; } public void setLkm_name(String lkm_name) { this.lkm_name = lkm_name; } public String getLkm_phone() { return lkm_phone; } public void setLkm_phone(String lkm_phone) { this.lkm_phone = lkm_phone; } public String getLkm_email() { return lkm_email; } public void setLkm_email(String lkm_email) { this.lkm_email = lkm_email; } public String getLkm_qq() { return lkm_qq; } public void setLkm_qq(String lkm_qq) { this.lkm_qq = lkm_qq; } public String getLkm_mobile() { return lkm_mobile; } public void setLkm_mobile(String lkm_mobile) { this.lkm_mobile = lkm_mobile; } public String getLkm_memo() { return lkm_memo; } public void setLkm_memo(String lkm_memo) { this.lkm_memo = lkm_memo; } public String getLkm_position() { return lkm_position; } public void setLkm_position(String lkm_position) { this.lkm_position = lkm_position; } public Customer getCustomer() { return customer; } public void setCustomer(Customer customer) { this.customer = customer; } public LinkMan() { } public String toString() { return "LinkMan [lkm_id=" + lkm_id + ", lkm_gender=" + lkm_gender + ", lkm_name=" + lkm_name + ", lkm_phone=" + lkm_phone + ", lkm_email=" + lkm_email + ", lkm_qq=" + lkm_qq + ", lkm_mobile=" + lkm_mobile + ", lkm_memo=" + lkm_memo + ", lkm_position=" + lkm_position + "]"; } } //联系人类配置hibernate映射文件 <hibernate-mapping package="com.jm.domain"> <class name="LinkMan" table="cst_linkman"> <id name="lkm_id" column="lkm_id" type="long"> <generator class="native"></generator> </id> <property name="lkm_gender" column="lkm_gender"></property> <property name="lkm_name" column="lkm_name" type="string"></property> <property name="lkm_phone" column="lkm_phone" type="java.lang.String"></property> <property name="lkm_email" column="lkm_email" type="java.lang.String"></property> <property name="lkm_qq" column="lkm_qq" type="java.lang.String"></property> <property name="lkm_mobile" column="lkm_mobile" type="java.lang.String"></property> <property name="lkm_memo" column="lkm_memo" type="java.lang.String"></property> <property name="lkm_position" column="lkm_position" type="java.lang.String"></property> <many-to-one name="customer" column="lkm_cust_id" class="Customer" > </many-to-one> </class> </hibernate-mapping> public class Demo2 { public static void fun() { Session session = HibernateUtils.openSession(); Transaction tx = session.beginTransaction(); //---------------------------------------------------- String hql = " from Customer c inner join fetch c.linkMens "; Query query = session.createQuery(hql); List<Customer> list = query.list(); System.out.println(list); //---------------------------------------------------- tx.commit(); session.close(); } public static void main(String[] args) { fun(); } }

hibernate中执行hql语句,只查询部分字段得到的结果集也只有那一部分字段的属性

如何在hibernate中执行hql语句,只查询部分字段得到的结果集也只有那一部分字段的属性,我试过select new Game(autoid,name,pinyin,initial,appkey,type) from Game 并且在对应的实体当中也创建了构造方法,DEBUG进去也确实是执行了 ``` public Game(Integer autoid, String name, String pinyin, String initial, String appkey, String type) { this.autoid = autoid; this.name = name; this.pinyin = pinyin; this.initial = initial; this.appkey = appkey; this.type = type; } ``` 但是我最后的结果集,还是把其他那一堆的字段全带上了,只不过没赋值而已,怎样才能让他得到的结果集里没有别的乱七八糟的属性,只有我想要的字段的?

基于SSH的权限问题HQL语句查询

当前做了一个外包项目 别人把DAO service 组件已经定义好了 表关系 user(用户表) role user_role(用户角色关联表) right(权限) role_right(角色权限关联表) 要求 dao层返回一个user对象 service层返回一个List <Right> 对象 当前遇到问题 [code="java"] //利用hibernate延迟加载 “load(User.class,pk)” ErsUser user = this.getUserDao().findByID(pk); Set setRole = user.getErsUserRoles(); List<ErsRight> setroleright= new ArrayList<ErsRight>(); System.out.println("service 1 角色大小"+setRole.size()); Iterator<ErsRole> it = setRole.iterator(); while(it.hasNext()){ ErsRole role=(ErsRole) it.next(); System.out.println("service 2"); setroleright.addAll(role.getErsRoleRights()); } [/code] 此句ErsRole role=(ErsRole) it.next();抱类型转换异常 setRole.size()打印结果正常,说明对象已经正常取出 因为此问题解决不了 所以求高手们帮我把 [code="java"] Java codeString sql = " select r.id, r.parentid,r.name,r.path,r.isActivity,r.securitycode,r.moduleid "+ "from ers_user u,ers_role re, ers_user_role u_r,ers_right r,ers_role_right r_r where"+ " u.id= u_r.userid and re.id =u_r.roleid and re.id=r_r.roleid and r.id=r_r.rightid and u.id="+cuser.getId(); [/code] 这句sql语句转换为hql语句 由于水平有限 实在是想不出办法,向高手们请教解决办法 [b]问题补充:[/b] 测试员在初期添加数据时 删除了一个关联外键 搭框架时没有改,以至于出现低级 错误 郁闷坏了 周末家里给发现了

Hibernate 中多张表连接,要求左连接,HQL语句怎么整。

有5张表: A表:id,bid B表:id,cid C表:id D表:id,cid E表:id,did B、D是C的子表,A是B的子表,E是D的子表。 全部左连接,要求顺序:A-B-C-D-E 可以反着:E-D-C-B-A,没什么区别,但是不能乱只能这两种。 HQL语句怎么写?我自己写的第一条: from A a left join B b on a.bid = b.id left join C c on b.cid = c.id left join D d on d.cid = c.id left join E e on e.did = d.id 这条语句提示on关键字有错。 第二条: from A a left join B b left join C c left join D d left join E e where a.bid = b.id and b.cid = c.id and d.cid = c.id and e.did = d.id 错误: org.springframework.orm.hibernate3.HibernateQueryException: Path expected for join! [ from com.newer.business.pojo.MProcedureModule mpme left join MProcedure mpe left join MManufacture mme left join MProceduring mpg left join MProcedureModuling mpmg where mpme.MProcedure.id = mpe.id and mpe.MManufacture.id = mme.id and mpg.MManufacture.id = mme.id and mpmg.MProceduring.id = mpg.id and mme.id = 1]; nested exception is org.hibernate.hql.ast.QuerySyntaxException: Path expected for join! [ from com.newer.business.pojo.MProcedureModule mpme left join MProcedure mpe left join MManufacture mme left join MProceduring mpg left join MProcedureModuling mpmg where mpme.MProcedure.id = mpe.id and mpe.MManufacture.id = mme.id and mpg.MManufacture.id = mme.id and mpmg.MProceduring.id = mpg.id and mme.id = 1] Caused by: org.hibernate.hql.ast.QuerySyntaxException: Path expected for join! [ from com.newer.business.pojo.MProcedureModule mpme left join MProcedure mpe left join MManufacture mme left join MProceduring mpg left join MProcedureModuling mpmg where mpme.MProcedure.id = mpe.id and mpe.MManufacture.id = mme.id and mpg.MManufacture.id = mme.id and mpmg.MProceduring.id = mpg.id and mme.id = 1] 没办法了,自己想不出,只能来请各位看看指点指点我。谢谢!!!

hibernate框架 使用sql语句 select count查询不到。。

代码 String sql = "select count(servId) from "+set; sess=sessionFactory.openSession(); tx=sess.beginTransaction(); Query query = sess.createSQLQuery(sql); BigDecimal count = (BigDecimal)query.uniqueResult(); totalProperty= count.intValue(); tx.commit(); sess.close(); set是个变量,是我一个表的名称,因为没有类和它关联所以使用原生sql语句进行查询 数据库连接没有问题,因为我对有类关联的表用select count 是可以的,但就是这个不好使。。。。别的sql 比如insert,delete 都是可以的。。

hibernate操作mysql,模糊查询时中文查不到,数字和英文可以查到

用hibernate做模糊查询,页面传递参数也处理了乱码 @Action(value="searchNameByad") public String searchNameByad()throws Exception{ System.out.println("android发送请求获取的参数是:"+buildingname); //解决乱码问题 String bn = new String(buildingname.getBytes("iso-8859-1"),"UTF-8"); List<Building> buildings = buildingService.getByName(bn); 在本地测试传中文参数可以查到数据,但是在上传到服务器后,传递中文参数却查不到,只能数字、英文可以查询到结果。我用本地远程连接服务器数据库,也是中文参数查不到数据。。。在服务器上的数据库里操作查询也是可以查的到。。求解 这是本地远程连接服务器数据库后的hql语句 Hibernate: select building0_.buildingid as buildingid11_, building0_.area as area11_, building0_.buildingname as building3_11_, building0_.linkman as linkman11_, building0_.linkphone as linkphone11_, building0_.email as email11_, building0_.qrcode as qrcode11_, building0_.province as province11_, building0_.city as city11_ from airquality.building building0_ where building0_.buildingname like '%广%'

hql 有问题

一个登陆操作 业务逻辑中 这样写查询不出数据 [code="java"]String hql = "from Account user where user.employeeName = '"+object.getEmployeeName()+"'"; [/code] 用 from Account 测试了下 可以查询出数据 问题就是处在这个hql 语句上, 可是这种写法我一直都在用, 没有出现过问题 , 哪位高人能指点下啊. [b]问题补充:[/b] 回一楼的 符合条件的数据确实是存在的 我使用sql语句可以查询出来在MyEclipse Database Explorer 中 例 如 select * from Account where EmployeeName = '刘总' 是确实能够查询出数据的. [b]问题补充:[/b] 回2楼的 user 我也换过了 不行 [b]问题补充:[/b] 回3楼的 我开始的时候说了 使用from Account 测试了 在System.out.println(list.size()); 的作用下, console 输入了 53 而使用String hql = "from Account user where user.employeeName = '"+object.getEmployeeName()+"'"; 什么结果是 0 [b]问题补充:[/b] 我在业务逻辑层的方法中这样写 [code="java"]public boolean isLoginSuccess(Account object) { // TODO Auto-generated method stub String hql = "from Account "; System.out.println("看看业务逻辑层的hql"+hql); List list = commonDAO.search(hql); System.out.println("业务逻辑层这边的城市"+list.size()); if(list.size() > 0){ Account item = (Account)list.get(0); if(object.getEmployeePwd().equals(item.getEmployeePwd())){ return true ; } } return false ; }[/code] 在DAO层方法是这样的 [code="java"]public List search(String hql) { // TODO Auto-generated method stub System.out.println("看看dao层的"+hql); List temp = super.getHibernateTemplate().find(hql); for(int i = 0 ; i < temp.size(); i++){ Account user = (Account)temp.get(i); System.out.println(user.getEmployeeName()); } System.out.println("看看dao层的"+temp.size()); return temp ; }[/code] 想用全部查询来测试是否能够成功查询出Account 表中的 数据 , 结果是可以的 业务逻辑中方法改回这样 String hql = "from Account account where account.employeeName = '"+object.getEmployeeName()+"'"; 就不行了 console 没输出数据 , list.size() 的输出结果是 0 我在ms sqlserver 的查询分析其中使用 select * from Account where EmployeeName = '刘总' 就查询出数据 自己也在dao层的方法中使用System.out.println(); 输出方法中使用 hql 语句, 都是很正常的, 会不会是hql 到了 ms sqlserver中 它的中文条件 '刘总' 被转义成了乱码 而不会从数据库中获取数据呢? [b]问题补充:[/b] 利用log4j。properties 文件 和 在 applicationContext.xml中设置了 <pro key="hibernate.show_sql">true</pro> 在 console 中输出了 被转义后的sql语句 [code="sql"]select account0_.EmployeeID as EmployeeID, account0_.EmployeeName as Employee2_0_, account0_.EmployeePwd as Employee3_0_, account0_.EmployeeRight as Employee4_0_, account0_.Remark as Remark0_ from xindunoadb.dbo.Account account0_ where account0_.EmployeeName='??×?'[/code] 很明显被转义后的查询条件成了乱码 这是怎么造成的呢? 我在web.xml是这样写的 [code="xml"]<filter> <filter-name>encodingFilter</filter-name> <filter-class> org.springframework.web.filter.CharacterEncodingFilter </filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>[/code] 怎么还会出现乱码呢? [b]问题补充:[/b] 清哪位帮忙看看 这个filter 的配置哪有问题 我以前是自己写filter 的 用了ssh 之后 才改用 提供了的这个 我另一个demo 中 也是使用spring 提供的类来做的, 是成功的了 没有道理这个不行啊 [b]问题补充:[/b] 在项目的lib 中 添加了jtds 1.2.jar 也修改applicationcontext.xml中的datasource 配置 , 结果重启tomcat 访问项目就报错了, 说无法创建FormBean了 不得以改回去了 [b]问题补充:[/b] [quote]CharacterEncodingFilter中定义的和jsp页面的编码不一致吧 zkl_1987 (初级程序员) 2009-04-09 采纳为答案[/quote] 这个问题比较低级了 , 我也回头查了下 , 没有不统一的问题, 都是UTF-8 [b]问题补充:[/b] [quote]囧rz 结果是编码问题 - -~ 我怎么觉得是你的数据库编码有问题捏? 把建表sql发上来看看。 问题应该就是在数据库的编码上了。 iampurse (中级程序员) 2009-04-09[/quote] 这个数据库不是我设计的 是已走的"前辈"留下的 没有建库脚本就没有办法了么? [b]问题补充:[/b] [quote]突然想起来的,不知道你配置没有……我觉得你应该配置了,但是除此之外想不出其它原因: Xml代码 <prop key="connection.characterEncoding">utf8</prop> <prop key="connection.characterEncoding">utf8</prop> hibernate的connection.characterEncoding属性。 Snow_Young (中级程序员) 2009-04-09[/quote] 这个我没有写... 请问这个配置是写在SessionFactory 或者 dateSource 中的哪个部分? [b]问题补充:[/b] [quote]突然想起来的,不知道你配置没有……我觉得你应该配置了,但是除此之外想不出其它原因: Xml代码 <prop key="connection.characterEncoding">utf8</prop> hibernate的connection.characterEncoding属性。 Snow_Young (中级程序员) [/quote] 我配置 [code="xml"] <prop key="connection.characterEncoding">utf8</prop> <prop key="connection.useUnicode">true</prop> [/code] 没有变化..... 复制一下我使用log4j.properties 在consosle 输出的结果 : [code="java"]08:56:02,046 DEBUG QueryTranslatorImpl:177 - HQL: from com.newshieldoa.common.pojo.Account account where account.employeeName = '刘总' and account.employeePwd = '.' 08:56:02,046 DEBUG QueryTranslatorImpl:178 - SQL: select account0_.EmployeeID as EmployeeID, account0_.EmployeeName as Employee2_0_, account0_.EmployeePwd as Employee3_0_, account0_.EmployeeRight as Employee4_0_, account0_.Remark as Remark0_ from xindunoadb.dbo.Account account0_ where account0_.EmployeeName='??×?' and account0_.EmployeePwd='.'[/code] [b]问题补充:[/b] [quote] Java代码 String hql = "from Account user where user.employeeName = :employeeName"; Query query = session.createQuery(hql) .setString("employeeName", object.getEmployeeName()); String hql = "from Account user where user.employeeName = :employeeName"; Query query = session.createQuery(hql) .setString("employeeName", object.getEmployeeName()); 另外你分数也给的太抠门了吧…… Snow_Young (中级程序员)[/quote] 呵呵 不是我抠门 我早就没有分了, 发帖之前就是 0 个金币, 我要是有200个 金币 早就全拿出来了 .... 您这个方法 我还没试 毕竟我习惯是在业务逻辑层把hql组织好传递进DAO层的, 您这个方法全是在DAO层做的 [b]问题补充:[/b] [quote]拼的和 命名的都一样的效果吧 - -~ 我还是觉得是你的数据库的问题。 数据库别人留下的 你也可以改的啊 alert 一下就好了嘛 iampurse (中级程序员) 2009-04-10[/quote] 我刚刚吧原来2000 的数据库 转移到了 2005 , 很遗憾 还是不行, 跟数据库没有关系了... [b]问题补充:[/b] 我的上帝啊 终于不是乱码了 !!!!!!!!!!!!!!11 在 applicationContext.xml 中 sessionFactory 的配置信息中 配置了这样一段代码就搞定了 [code="xml"] <prop key="hibernate.query.factory_class"> org.hibernate.hql.classic.ClassicQueryTranslatorFactory </prop>[/code] 快2天了 终于把这该死的问题搞定了. 做个标记 ,为自己, 为别人.

hibernate三个表联合查询不出结果

# 求助 //根据分类id查询商品个数 public int findCountCid(Integer cid) { String hql = "select count(*) from Product p join p.categorySecond.category c where c.cid=?"; List<Long> list = (List<Long>) this.getHibernateTemplate().find(hql,cid); if(list != null && list.size() > 0){ return list.get(0).intValue(); } return 0; } ## category表 public class Category { private Integer cid; private String cname; private Set<CategorySecond> categorySeconds=new HashSet<CategorySecond>(); public Set<CategorySecond> getCategorySeconds() { return categorySeconds; } ## categorysecond表 public class CategorySecond { private Integer csid; private String csname; private Category category; private Set<Product> products=new HashSet<Product>(); public Category getCategory() { return category; } public void setCategory(Category category) { this.category = category; } public Set<Product> getProducts() { return products; } public void setProducts(Set<Product> products) { this.products = products; } ## product表 public class Product { private Integer pid; private String pname; private Double market_price; private Double shop_price; private String image; private String pdesc; private Integer is_hot; private Date pdate; //二级分类的外键,使用二级分类的对象 private CategorySecond categorySecond; public CategorySecond getCategorySecond() { return categorySecond; } public void setCategorySecond(CategorySecond categorySecond) { this.categorySecond = categorySecond; } ## 映射关系如下 <many-to-one name="category" lazy="false" class="cn.itcast.shop.category.vo.Category" column="cid"></many-to-one> <!-- 二级分类与商品的关联 --> <set lazy="false" name="products"> <key column="csid"></key> <one-to-many class="cn.itcast.shop.product.vo.Product"/> </set> <many-to-one name="categorySecond" lazy="false" class="cn.itcast.shop.categorysecond.vo.CategorySecond"></many-to-one> <set order-by="csid" name="categorySeconds" lazy="false"> <key column="cid"></key> <one-to-many class="cn.itcast.shop.categorysecond.vo.CategorySecond"/> </set>

Hibernate批量删除问题

我使用这样的hql语句删除 [code="java"] delete from User where id in(16.18) [/code] 他发出的sql语句是: [code="java"] delete from t_user where id in (16 , 18) [/code] 并没有发出查询16 18两个User对象,然后再删除这两个user对象 为什么说Hibernate批量删除效率低呢?那位解释解释 [b]问题补充:[/b] [quote] 这个方式进行删除时,是不用对user对象进行查询了,所以效果跟JDBC一样快了,但是带来了个后果就是不能使用Hibernate的缓存了。在这里删除的数据,在缓存中是不能体现出来的,必须在后面进行主动的更新。 Java代码 session.flush(); [/quote] session.flush(); 是将缓存数据与数据库数据同步 [quote] 这个操作带来的开销并不一定比查询出来再删除带来的开销要小的。 所以通常的删除方式是将要删除的对象找出来再进行删除。 [/quote] “将要删除的对象找出来再进行删除。” 将事务提交时,hibernate也会执行session.flush啊 [b]问题补充:[/b] [quote]你写HQL语句 当遇到解析不出的关键字时,Hibernate会直接把它翻译成普通的SQL语句进行操作的[/quote] 我写的HQL里面有解析不出的关键字吗? 谢谢

hibernate4为什么在执行save ()后直接查询直接查询不到数据?

![图片说明](https://img-ask.csdn.net/upload/201511/18/1447830636_399666.png)hibernate4为什么在执行save ()后直接查询直接查询不到数据 同样的配置在hibernate3这样是能查询到数据的,换到hibernate4就是查不到, 就像save()操作没有把对象缓存一样,这样是为什么呀?下面是配置 <property name="dialect"> org.hibernate.dialect.MySQL5InnoDBDialect </property> <property name="current_session_context_class">jta</property> <property name="hibernate.transaction.factory_class"> org.hibernate.transaction.JTATransactionFactory </property> <property name="hibernate.transaction.manager_lookup_class"> com.atomikos.icatch.jta.hibernate3.TransactionManagerLookup </property> <property name="connection.release_mode">auto</property> <property name="hibernate.transaction.flush_before_completion"> true </property> <property name="hibernate.transaction.auto_close_session"> true </property> 事务用的JTA java代码时在同一个事务里添加和查询的: User user = new User() user.setOid("123"); ... Dao.save(user); list lst = Dao.query("User","where oid='123'"); 结果lst为空 理论上save后对象应该缓存在Session里的吧,查询的话也应该查询到缓存里对象吧,可是为什么查询不到呢? 经过验证,对象确实在session里,但是在同一个事务内就是查询不到,为什么呢?

关于hibernate分页的效率问题

今天在做hibernate分页的时候有个人在看到我后台报的sql语句时跟我说这个是假分页,sql语句是这样的select * from (select row_.*,rownum rownum_ from (select t.* from user_view t) row_) where rownum_ <= 20 and rownum_ > 10,他跟我说首先执行了里面的语句查询出了所有的东西然后在执行了外面的语句,然后他说真分页应该是这样的select * from (select rownum rn,a.name from user_view a where rownum <=20) t where t.rn >= 10,然后他把这两条语句放到plsql的sql执行窗口里面执行了解释计划,跟我说第一条语句的基数是表里所有的记录数,第二条语句的基数是20,这说明了计算机在执行第一条语句的时候是先查出了所有的东西。但是我执行了这两条语句其实耗时是差不多的,但是他说在本机的查询看不出效率的差别,要连外部的数据库查询才能看出效率差别,我想全世界那么多人在用hibernate真分页,不会都被忽悠了吧,我该怎么反驳这个事情。我上传了截图

hibernate查询的问题

<p>最近在做项目的过程中,遇到了一个让我觉得很困扰的问题,到这里来问一下各位!</p> <p> </p> <pre name="code" class="java"> public String doQuery2() throws Exception { contractReviewInfo.setPopedom(getPopedom()); if(!"1".equals(contractReviewInfo.getReadOnly())){ contractReviewInfo.setErrorMessage(Message.MES_NO_POPEDOM); return "recordList2"; } ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(ServletActionContext.getServletContext()); BaseDao baseDao = (BaseDao) ctx.getBean("baseDao"); contractReviewInfo.setContractClass(baseDao.getLovMappingValue("contract_class_contract")); String hql = "select a from ArchiveContractDraft a,ReviewInfo r where a.archiveContractCode = r.archiveContractNo and a.contractType = '2' and r.examineResults = '0' and r.reviewClass = '1'"; String queryKey1 = contractReviewInfo.getQueryKey1(); String queryKey2 = contractReviewInfo.getQueryKey2(); if(queryKey1 != null &amp;&amp; !"".equals(queryKey1)){ hql = hql + " and a.contractDraftName like '%" + queryKey1 + "%'"; } if(queryKey2 != null &amp;&amp; !"".equals(queryKey2)){ hql = hql + " and a.isUrgent = '" + queryKey2 + "'"; } List&lt;ArchiveContractDraft&gt; draftlist = baseDao.find(hql); PaginationSupport paginationSupport = new PaginationSupport(draftlist,draftlist.size()/20,20,0); contractReviewInfo.setPaginationSupport(paginationSupport); contractReviewInfo.setStartIndex(0); return "recordList2"; } </pre> <p> 以上代码,如果queryKey都为空的话,可以正常查出相应信息,如果选择了queryKey2,也可正常查出,但是当选择了queryKey1时,在plsql中可以查出的数据在程序中却查不出.不知道问题出在了那里,请大家帮忙看一下吧.下面我贴一下语句中涉及到的表的映射文件内容.</p> <p> </p> <pre name="code" class="xml">&lt;?xml version = '1.0'?&gt; &lt;!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"&gt; &lt;hibernate-mapping&gt; &lt;class name="com.yzwb.cctv.domain.ReviewInfo" table="REVIEW_INFO" schema="CCTV"&gt; &lt;id name="ID" column="ID" type="string"&gt; &lt;generator class="sequence"&gt; &lt;param name="sequence"&gt;REVIEW_INFO_SEQ&lt;/param&gt; &lt;/generator&gt; &lt;/id&gt; &lt;property name="submissionDate" column="SUBMISSION_DATE" type="date"&gt;&lt;/property&gt; &lt;property name="censorsCertificate" column="CENSORS_CERTIFICATE" type="string"&gt;&lt;/property&gt; &lt;property name="reviewTimes" column="REVIEW_TIMES" type="integer"&gt;&lt;/property&gt; &lt;property name="accraditationDate" column="ACCRADITATION_DATE" type="date"&gt;&lt;/property&gt; &lt;property name="examineResults" column="EXAMINE_RESULTS" type="string"&gt;&lt;/property&gt; &lt;property name="alterReason" column="ALTER_REASON" type="string"&gt;&lt;/property&gt; &lt;property name="firstExaminer" column="FIRST_EXAMINER" type="string"&gt;&lt;/property&gt; &lt;property name="secondExaminer" column="SECOND_EXAMINER" type="string"&gt;&lt;/property&gt; &lt;property name="comments" column="COMMENTS" type="string"&gt;&lt;/property&gt; &lt;property name="reviewClass" column="REVIEW_CLASS" type="string"&gt;&lt;/property&gt; &lt;property name="archiveAgreementNo" column="ARCHIVE_AGREEMENT_NO" type="string"&gt;&lt;/property&gt; &lt;property name="archiveContractNo" column="ARCHIVE_CONTRACT_NO" type="string"&gt;&lt;/property&gt; &lt;property name="creatDate" column="CREAT_DATE" type="date"&gt;&lt;/property&gt; &lt;property name="creatPerson" column="CREAT_PERSON" type="string"&gt;&lt;/property&gt; &lt;property name="giveUpReason" column="GIVEUP_REASON" type="string"&gt;&lt;/property&gt; &lt;/class&gt; &lt;/hibernate-mapping&gt; </pre> <p> 以上为ReviewInfo</p> <p> </p> <pre name="code" class="xml">&lt;?xml version = '1.0'?&gt; &lt;!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"&gt; &lt;hibernate-mapping&gt; &lt;class name="com.yzwb.cctv.domain.ArchiveContractDraft" table="ARCHIVE_CONTRACT_DRAFT" schema="cctv"&gt; &lt;id name="archiveContractCode" column="ARCHIVE_CONTRACT_CODE" type="string"&gt; &lt;generator class="assigned"&gt;&lt;/generator&gt; &lt;/id&gt; &lt;property name="contractDraftName" column="CONTRACT_DRAFT_NAME" type="string"/&gt; &lt;property name="archiveContractClass" column="ARCHIVE_CONTRACT_CLASS" type="string"/&gt; &lt;property name="isUrgent" column="IS_URGENT" type="string"/&gt; &lt;property name="createDate" column="CREATE_DATE" type="date"/&gt; &lt;property name="createPerson" column="CREATE_PERSON" type="string"/&gt; &lt;property name="createDepartment" column="CREATE_DEPARTMENT" type="string"/&gt; &lt;property name="auditStatus" column="AUDIT_STATUS" type="string"/&gt; &lt;property name="auditPerson" column="AUDIT_PERSON" type="string"/&gt; &lt;property name="auditDate" column="AUDIT_DATE" type="date"/&gt; &lt;property name="submissionStatus" column="SUBMISSION_STATUS" type="string"/&gt; &lt;property name="filingStatus" column="FILING_STATUS" type="string"/&gt; &lt;property name="contractType" column="CONTRACT_STATUS" type="string"/&gt; &lt;/class&gt; &lt;/hibernate-mapping&gt;</pre> <p> 以上为ArchiveContractDraft</p> <p>PS:我已经把映射文件配置在applicationContext文件中了,其他地方该配置的我也配置好了</p>

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

ArrayList源码分析(入门篇)

ArrayList源码分析 前言: 写这篇博客的主要原因是,在我上一次参加千牵科技Java实习生面试时,有被面试官问到ArrayList为什么查找的速度较快,插入和删除的速度较慢?当时我回答得不好,很大的一部分原因是因为我没有阅读过ArrayList源码,虽然最后收到Offer了,但我拒绝了,打算寒假学得再深入些再广泛些,下学期开学后再去投递其他更好的公司。为了更加深入理解ArrayList,也为

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

String s = new String(" a ") 到底产生几个对象?

老生常谈的一个梗,到2020了还在争论,你们一天天的,哎哎哎,我不是针对你一个,我是说在座的各位都是人才! 上图红色的这3个箭头,对于通过new产生一个字符串(”宜春”)时,会先去常量池中查找是否已经有了”宜春”对象,如果没有则在常量池中创建一个此字符串对象,然后堆中再创建一个常量池中此”宜春”对象的拷贝对象。 也就是说准确答案是产生了一个或两个对象,如果常量池中原来没有 ”宜春” ,就是两个。...

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

玩转springboot启动banner定义所得

最近接手了一个springboot项目,不是不熟悉这个框架,启动时打印的信息吸引了我。 这不是我熟悉的常用springboot的打印信息啊,我打开自己的项目: 还真是的,不用默认的感觉也挺高大上的。一时兴起,就去研究了一下源代码,还正是有些收获,稍后我会总结一下。正常情况下做为一个老程序员,是不会对这种小儿科感兴趣的,不就是一个控制台打印嘛。哈哈! 于是出于最初的好奇,研究了项目的源代码。看到

带了6个月的徒弟当了面试官,而身为高级工程师的我天天修Bug......

即将毕业的应届毕业生一枚,现在只拿到了两家offer,但最近听到一些消息,其中一个offer,我这个组据说客户很少,很有可能整组被裁掉。 想问大家: 如果我刚入职这个组就被裁了怎么办呢? 大家都是什么时候知道自己要被裁了的? 面试软技能指导: BQ/Project/Resume 试听内容: 除了刷题,还有哪些技能是拿到offer不可或缺的要素 如何提升面试软实力:简历, 行为面试,沟通能...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

终于懂了TCP和UDP协议区别

终于懂了TCP和UDP协议区别

你打算用Java 8一辈子都不打算升级到Java 14,真香

我们程序员应该抱着尝鲜、猎奇的心态,否则就容易固步自封,技术停滞不前。

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《经典算法案例》01-08:如何使用质数设计扫雷(Minesweeper)游戏

我们都玩过Windows操作系统中的经典游戏扫雷(Minesweeper),如果把质数当作一颗雷,那么,表格中红色的数字哪些是雷(质数)?您能找出多少个呢?文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等,方便大家观察质数的分布规律及特性,以便对算法求解有指导意义。另外,判断质数是初学算法,理解算法重要性的一个非常好的案例。

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

Java岗开发3年,公司临时抽查算法,离职后这几题我记一辈子

前几天我们公司做了一件蠢事,非常非常愚蠢的事情。我原以为从学校出来之后,除了找工作有测试外,不会有任何与考试有关的事儿。 但是,天有不测风云,公司技术总监、人事总监两位大佬突然降临到我们事业线,叫上我老大,给我们组织了一场别开生面的“考试”。 那是一个风和日丽的下午,我翘着二郎腿,左手端着一杯卡布奇诺,右手抓着我的罗技鼠标,滚动着轮轴,穿梭在头条热点之间。 “淡黄的长裙~蓬松的头发...

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

我说我懂多线程,面试官立马给我发了offer

不小心拿了几个offer,有点烦

爬虫(九十七)不爬妹子图的爬虫不是一只好爬虫

不爬妹子图的爬虫不是一只好爬虫。----鲁迅还是一样,我们在爬取妹子图片的时候,首先要分析一下 DOM这里的img是就封面,如果只抓取封面的话,到这就可以了,但是我们取的是所有图片,所...

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

立即提问
相关内容推荐