日期:2014-05-20  浏览次数:20753 次

java sql语句问题
select * from (select * from M_asset m where 1=1 and m.total>0 and m.motorRoom = '65' order by m.datcreate desc )a where 1=1这个sql 是正确的可以查询到数据 转换成hql该怎么写呢 我是这么写的 但是报错 select a from (select m from Asset m where 1=1 and m.total>0 and m.motorRoom = '65' order by m.datcreate desc )a where 1=1 其中M-asset是数据库中的表名 而Asset为类名 

------解决方案--------------------
转换成HQL就是把表名换对象名,字段名换属性名就OK了。
你也可以直接用createSQLQuery(sql),hibernate也是可以用sql查询的。
------解决方案--------------------
    不知道LZ为什么要用子查询,为了取前几条数据?
    如果仅仅是“ select * from (select * from boss_asset m where 1=1 and m.motorRoom = '65' order by m.datcreate desc )a where 1=1 and a.name like '%服务器%' ”,完全不需要子查询,效率低。
select * from boss_asset m where 1=1 and m.motorRoom = '65' and m.name like '%服务器%'  order by m.datcreate desc就可以啊.
    另外,你代码贴出来的部分,拼的SQL应该也是有问题的,你是想查motorRoom在list中的motorRoomId里的记录吧?应该是and (m.motorRoom=? or m.motorRoom=? or ...) order by...,因为and 的优先级比 or 高。