hibernate是如何生成sql语句的

比如就那保存操作来说,给一条程序运行时由hibernate产生的sql语句:
insert into t_api_access_log
(accessTime, apiID, apiName, cost, createTime, resultCode, returnCnt, userID, userName, id)
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
上面的sql语句中 id字段为什么会在最后边?而不是在第一个位置?到底是如何生成这条sql语句的?(是根据实体类的属性顺序么?)

3个回答

我想应该是根据在bean里面控制表字段生成的顺序,检查一下你的配置文件,希望能帮到你。

wojiaowo11111
Mr_老大爷 你检查下你实体类,实体类映射文件,hbm.xml结尾的,还有和数据库中的字段,这三个顺序是否一致
3 年多之前 回复
Dzq_Boyka
Dzq_Boyka 就是能不能详细点,谢谢了,我不大明白。也只是猜想
3 年多之前 回复

跟实体类的顺序没有关系的。你调整一下hbm.xml和数据库里面的字段的顺序吧。

若是注解方式的话,顺序是由实体类定义决定的

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
hibernate生成的sql语句的疑问?
在执行一个普通的查询,取某个持久化对象中5条记录时发现多了5条sql语句,请大侠指点!rnrn查询dao的实现rnrn[code=Java]rn public List findAll(User user, int begin, int number) rn Session session = sessionFactory.openSession();rn try rn session.beginTransaction();rn return session.createQuery("from UserFriend o where o.user=?")rn .setParameter(0, user).setFirstResult(begin).setMaxResults(number)rn .list();rn finally rn session.getTransaction().commit();rn session.close();rn rn rn[/code]rnrnrn生成的语句为:rnrn[code=SQL]rnHibernate: select userfriend0_.Id as Id2_, userfriend0_.userId as userId2_, userfriend0_.userIdFriend as userIdFr3_2_ from T_UserFriend userfriend0_ where userfriend0_.userId=? limit ?rnHibernate: select user0_.Id as Id1_0_, user0_.username as username1_0_, user0_.password as password1_0_ from T_User user0_ where user0_.Id=?rnHibernate: select user0_.Id as Id1_0_, user0_.username as username1_0_, user0_.password as password1_0_ from T_User user0_ where user0_.Id=?rnHibernate: select user0_.Id as Id1_0_, user0_.username as username1_0_, user0_.password as password1_0_ from T_User user0_ where user0_.Id=?rnHibernate: select user0_.Id as Id1_0_, user0_.username as username1_0_, user0_.password as password1_0_ from T_User user0_ where user0_.Id=?rnHibernate: select user0_.Id as Id1_0_, user0_.username as username1_0_, user0_.password as password1_0_ from T_User user0_ where user0_.Id=?rnrn[/code]rnrn下面5条语句是怎么来的呢?
关于hibernate生成的sql的语句????
每次看log4j输出的日志中,hibernate生成的sql都用as起了别名.rn这有什么性能优化,能不能设置什么不让它起别名??rn我写hql查询的时候的.生成的sql查询语句里面有我没有指定的列名,rn比如我只查name和password.生成的sql的语句应该是select name ,password from usersrn而他生成的是查了所有列
update sql 语句hibernate是如何实现的
update table_name set name = ? where id = ?
如何生成SQL语句???
有一个checklistbox,上有男,女,无学历等,我想经过选择动态生成一SQL语句,如下代码能否实现,如能实现,我现在的写法是否能通过,不能通过的话该如何写,请指教。rnif checklistbox1.Checked[0] thenrn str2:=str2+xinbie='男';rn if checklistbox1.Checked[1] thenrn str2:=str2+''+'and'+xinbie='女';rn if checklistbox1.Checked[2] thenrn str2:=str2+''+'and'+xianxueli='无学历';
hibernate如何执行SQL语句?
hibernate如何执行SQL语句?rnrn比如 select count(id) from user .. 如何得到count值.rnrn如果使用 查看List的大小感觉效率很低,毕竟是把对象放到List里面然后返回的.rnrn谢谢各位参与
Hibernate使用xdoclet生成映射文件和sql语句
NULL 博文链接:https://javatozhang.iteye.com/blog/2045875
Hibernate查询为何生成两条SQL语句
String hql="from News a where a.title like ?";rn Query q=session.createQuery(hql);rn rn q.setParameter(0, "%"+newstitle+"%");rn newslist=q.list();rnrn我在ACTION中执行以上查询,在MYECLIPSE中的窗口为何看到生成了两条相关的SQL语句:如下:rnHibernate: select news0_.id as id2_, news0_.title as title2_, news0_.detail as detail2_, news0_.author as author2_, news0_.bfrq as bfrq2_, news0_.newszt as newszt2_ from news news0_ where news0_.title like ?rnHibernate: select news0_.id as id2_, news0_.title as title2_, news0_.detail as detail2_, news0_.author as author2_, news0_.bfrq as bfrq2_, news0_.newszt as newszt2_ from news news0_ where news0_.title like ?rnrnrn以上情况,在只找到一条记录的时候也一样,何解!
模拟Hibernate底层生成SQL语句(反射机制)
package com.factory.dao.imp; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap;
关于hibernate生成的SQL语句问题
程序中的SQL语句是rnstrSQL = "select t from Telegram as t order by t.id";rnrn在控制台输出的语句是:rnHibernate: select top 20 telegram0_.ID as ID, telegram0_.OriginalID as OriginalID, telegram0_.Format as Format, telegram0_.Type as Type, telegram0_.HeadText as HeadText, telegram0_.Content as Content, telegram0_.RelevantFlight as Relevant7_, telegram0_.DisposeKind as DisposeK8_, telegram0_.Sender as Sender, telegram0_.SendTime as SendTime, telegram0_.IsLocalSend as IsLocal11_, telegram0_.Status as Status, telegram0_.IsEdited as IsEdited, telegram0_.RelevantTelex as Relevan14_, telegram0_.IsIncorrectCopy as IsIncor15_, telegram0_.SendTerminal as SendTer16_ from dbo.Telegram telegram0_ order by telegram0_.IDrnrn请大家注意看,当我的字段长度超过10位时,它就会自动地把字段名变为"XX_"形式了,请问这是为什么啊,是不是要在哪里设定?rn我的hbm文件肯定没错,是用myEc自带的反向工程工具生成的.谢谢!
hibernate不能生成表和相关sql语句
有两个一样的项目。一个项目连的是mysql ,但是好像安装未成功。另一个连得是sqlserver,但是我查看sqlserver端口号全为0,我自己给它改成了1433.两个项目看到的结果都是一样,不能生成表和相关sql语句,而且没有报任何错误。可能是什么原因?
关于hibernate生成的多对多sql语句的问题
我在配置一个多对多的映射关系时,打印hibernate生成的查询sql语名时,发现它不是一条关联的sql而是分成多条单表查询的sql语句,不知道如何来优化这样的关系?
hibernate如何执行SQL语句,HQL语句
小弟已经有好长时间没有用过hibernate了,里边的一些语句执行方法已经不记得了,请各位高手指点下100分奉上:rnrn一、在hibernate里,如何执行SQL语句,增、删、改、查,比如:select * from table ,这样的常用语句,rnrn二、在hibernate里,如何执行HQL语句,增、删、改、查,比如:from Table,这样的HQL语句
如何生成这个SQL语句?
Table: tConfigrnColumns: iType(smallint) sUsers(nvarchar) Data(nvarchar) rnRecord: 1 aa 130xxxxxxxxrn 1 aa 138xxxxxxxxrn 2 bb 136xxxxxxxxrn ...... ...... ......rn我要得到:rn 1 aa 130xxxxxxxx,138xxxxxxxx,......rn(所有的电话号码在一个字段中)
PowerDesigner 如何生成sql语句
1.选择数据库
如何生成这样的sql语句
有这样的一段代码:rnselect 数量=count(*), 年份=2005 from jibenqingkuang where (xb='男' and datediff(year,cssj,'2005-1-1')=60) or (xb='女' and datediff(year,cssj,'2005-1-1')=50 and ygxs like '%工%'rnrn其中年份与时间的'2005','2005-1-1'是动态变化的,如何生成形如如下的代码呢rnselect 数量=count(*), 年份=2005 from jibenqingkuang where (xb='男' and datediff(year,cssj,'2005-1-1')=60) or (xb='女' and datediff(year,cssj,'2005-1-1')=50 and ygxs like '%工%'rn unionrnselect 数量=count(*), 年份=2006 from jibenqingkuang where (xb='男' and datediff(year,cssj,'2006-1-1')=60) or (xb='女' and datediff(year,cssj,'2006-1-1')=50 and ygxs like '%工%'rnunionrnselect 数量=count(*), 年份=2007 from jibenqingkuang where (xb='男' and datediff(year,cssj,'2007-1-1')=60) or (xb='女' and datediff(year,cssj,'2007-1-1')=50 and ygxs like '%工%'rn如输入2009则代码会依次类推union到2009年的时间rn
如何察看生成的SQL语句
比如如下代码:rnrn ADOQry->Active= false;rn ADOQry->SQL->Clear();rn ADOQry->SQL->Add("select id from account");rn ADOQry->SQL->Add("where username=:Username and password=:Password");rn ADOQry->Parameters->ParamByName("Username")->Value= CmbBoxUser->Text;rn ADOQry->Parameters->ParamByName("Password")->Value= EdtPW->Text;rn ADOQry->Prepared= true;rn ADOQry->Open();rn ShowMessage(ADOQry->SQL->Text);rnrn我想看看替换完的SQL是什么样子,请问怎么看?rnrn另外,Delphi 带的 SQL Monitor 只能看BDE的,那么ADO + Access的能用什么工具看到?
oracle数据库如何生成sql语句?
怎么将一个已有数据库中的所有信息都生成sql语句?
hibernate 生成sql问题。
一条hql语句生成很多条一样的sql语句。下面是一个例子:rnString hql = "from users u where u.name=?";rn我在控制台观察它生成了 很多 select 列名1,列名2,列名n,列名等等。。。 from users u where u.name =? ;rnrn它生成很多sql语句,导致我连接数据库的连接数满了,报连接数满了的错误。
Hibernate生成sql错误!!!!
我的实体类如下rn[code=Java]rn@Entityrn@Table(name = "kh_riskevualtion", catalog = "guarantee")rnpublic class KhRiskevualtion implements java.io.Serializable rnrn private static final long serialVersionUID = 1L;rn private Integer fxpgId;rn private KhSurvey khSurvey;rn private KhClientlnformation khClientlnformation;rn private GyEmployee gyEmployee;rn private KhRisktype khRisktype;rn private String dccontent;rn private String dcyj;rn private Date dctime;rn 。。。。。。。。。。。。。。。rn[/code]rn当程序运行时,查询结果出不来,查看生成的sql如下,发现最后加了where serialVersionUID like ?:rnrnHibernate: select khriskevua0_.fxpgId as fxpgId22_, khriskevua0_.dccontent as dccontent22_, khriskevua0_.dctime as dctime22_, khriskevua0_.dcyj as dcyj22_, khriskevua0_.emp_Id as emp5_22_, khriskevua0_.customId as customId22_, khriskevua0_.fxflId as fxflId22_, khriskevua0_.dcmdId as dcmdId22_ from guarantee.kh_riskevualtion khriskevua0_ where serialVersionUID like ?rnrn这是为什么啊?怎么才能去掉啊?
hibernate 一条hql语句生成很多一样的sql语句。
我在控制台观察一条hql语句生成很多条一样的sql语句。下面是一个例子:rnString hql = "from users u where u.name=?";rn它在控制台显示很多 select 列名1,列名2,列名n,列名等等。。。 from users u where u.name =? ;rnrn它生成很多sql语句,导致我连接数据库的连接数满了,报连接数满了的错误。
SQL Server如何生成sql语句
原来的数据库中某些表有一部分数据,现在我想生成下面的sql语句,希望重新建库的时候执行sql语句就可以添加数据,下面的sql语句怎样生成啊,谢谢!rnrnSET IDENTITY_INSERT [Forum_Admin] ONrnrn INSERT [Forum_Admin] ( [Admin_ID] , [UserName] , [Password] , [AdminRight] , [IsSuperAdmin] , [LastLoginTime] , [LastLoginIp] ) VALUES ( 1 , 'admin' , '123456' , '"1|1"' , 1 , '2006-09-10 12:07:22.000' , '127.0.0.1' )rn INSERT [Forum_Admin] ( [Admin_ID] , [UserName] , [Password] , [AdminRight] , [IsSuperAdmin] , [LastLoginTime] , [LastLoginIp] ) VALUES ( 2 , 'test' , '123456' , '"1|1"' , 0 , '2006-07-26 21:15:07.703' , '127.0.0.1' )rn INSERT [Forum_Admin] ( [Admin_ID] , [UserName] , [Password] , [AdminRight] , [IsSuperAdmin] , [LastLoginTime] , [LastLoginIp] ) VALUES ( 3 , 'test1' , '111111' , '' , 1 , '2006-06-07 09:49:17.377' , '127.0.0.1' )rnrn SET IDENTITY_INSERT [Forum_Admin] OFF
Hibernate执行sql语句
Hibernate执行sql语句 : BasicServiceImpl basicServiceImpl = new BasicServiceImpl(); String hql = "select * from AccountInfo where selfId='0000100003' or(left(selfId,10)='0000100004' and  nodeSum=0)"; ...
Hibernate执行SQL语句
我现在要实现这么一个功能,,就是一个方法传入一个SQL语句,把结果返回出来,不知道Hibernate如何实现,rn[code=Java]rn List result = new ArrayList();rn SQLQuery sqlQuery = getSession().createSQLQuery(sql).addEntity("", "");rn List qdata = sqlQuery.list();rn[/code]rnrn因为Hibernate执行sql必须使用addEntity方法,而且必须要指定类名, 因为我传进来的SQL表名肯定是不确定,也许是A表,也许是B表,总之不确定。。那么addEntity这个里面的类如何去写,,或者说这样的情况如何实现,把数据查询出来。。
Hibernate 查看SQL语句
Hibernatern我通过?占位符传入的参数 通过控制台可到的SQL语句如下rnSELECT COUNT(1) AS COUNT FROM SystemMenu WHERE 1 = 1 AND name = ?rnrn我想看到它生成的全部SQL如果做到 有什么工具 或者需要配置哪些东西rn可以看到它发送到数据库的SQLrn比如要看到 SELECT COUNT(1) AS COUNT FROM SystemMenu WHERE 1 = 1 AND name = ‘张三’
hibernate sql语句
[code="java"]rnSession sess = HibernateSessionFactory.getSession();rnTransaction tran = sess.beginTransaction();rnString sql = "insert into news(id,title,time,type1,context) values("+news.getId()+",'"+news.getTitle()+"','"+news.getTime()+"','"+news.getType1()+"','"+news.getContext()+"')";rn Query q = sess.createSQLQuery(sql);rntran.commit();rnsess.close();rn[/code]rn帮忙看一下这个sql语句有什么错误,数据库的链接是正确的,应该就是sql语句的错误。news.getId()是int型,其他的都是verchar类型。
hibernate sql语句报错
[code=java]final String hql = "update pain m set m.sprq = to_date(':sprq','yyyy-mm-dd hh24:mi:ss'),m.spr = :spr";rn return hibernateDao.createQuery(hql).setString("sprq", sprq)rn .setString("spr", spr).executeUpdate();[/code]rnrnrn求大神们帮忙看看我这个sql怎么一执行就报下面的错误rnParameter sprq does not exist as a named parameter in [update pain m set m.sprq = to_date(':sprq','yyyy-mm-dd hh24:mi:ss'),m.spr = :spr]
Hibernate中Sql语句
hibernate中使用sql 而不是hql语句
Hibernate打印sql语句
只需要一行简单的属性就可以搞定了。如下代码 classpath*:com/zhiwei/credit/model/**/*.hbm.xml classpath*:com/credit/proj/hbms/*.hbm.xm
hibernate执行sql语句
public ResultSet writeXml() throws HibernateException, SQLException rn Session session = getSession();rn ResultSet rs = null;rn String sql = "select count(cardname) as count,cardname from tb_dk_orderinfo group by cardname order by count desc";rnrn // 获取connection,执行静态SQLrn Statement state = session.connection().createStatement();rn rs = state.executeQuery(sql);rn session.close();rnrn return rs;rn rnrn这段代码执行的时候会抛异常:query did not return a unique result: 10rnsql语句执行出来的结果是会返回多条记录,这样写不可以执行这样的语句吗?
hibernate sql语句求助
现在有两张相关联的数据库表,jz_buisness_plan和jz_stream,映射文件如下:rn[code=Java]rnpublic class JzBusinessPlan implements java.io.Serializable rnprivate Integer gpId;rn private Date plandate;rn private String remark;rn private Set jzStreams = new HashSet(0);rn[/code]rn[code=Java]public class JzStream implements java.io.Serializable rn private Integer opId;rn private JzBusinessPlan jzBusinessPlan;rn private String results;rn private String comments;rn private Date opTime;[/code]rn现在需要从表Jz_business_plan中查找所有满足不在jzstream表中的jzbusinessplan的信息,我该怎么写?谢谢!
Hibernate生产SQL语句
模仿Hibernate生产SQL语句,使用Java反射
关于hibernate sql语句
项目的持久层用的hibernate,给项目做框架的用的是封装的一套方法rn一个更新的流程rn[code=java]rnBaseDao:rn public void update(T obj);rnBaseDaolmpl:rn private SessionFactory sessionFactory;rn public void update(T obj)rn sessionFactory.getCurrentSession().update(obj);rn rnEmpDao:rn public Emp update(Emp obj) throws Exception;rnEmpDaoImpl:rn private BaseDao ibaseDao;rn public Emp update(Emp obj) throws Exceptionrn ibaseDao.update(obj);rn return obj;rn rnEmpService:rn public Emp update(Emp obj) throws Exception;rnEmpServiceImpl:rn private EmpDao empDao;rn public Emp update(Emp obj) throws Exceptionrn obj=empDao.update(obj);rn return obj;rn rnEmpAction:rn private EmpService empService;rn public void update()rn Emp emp=this.getModel();rn tryrn empService.update(emp);rn catch()rn rn[/code]rn以上就是走了一个流程;他用的是封装好的方法。但是如果我要是想要写sql语句,应该则么写?在哪写?怎么调用?
hibernate 中的sql语句
关于hibernate关联,其中哪种关联发出的是子查询语句,哪种发出的是表连接语句,大虾给个解释
利用hibernate生成建表语句
序 不使用jpa的注解,还是想利用hibernate已经做好的适配去生成建表的sql。 maven <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-...
hibernate生成的sql中如何显示中文?
将log4j.properties的log4j.logger.org.hibernate.type=debug设置后,sql中可以显示参数值了,但是中文仍然是“???”,请问有什么办法正确显示中文
hibernate 如何 显示 生成的sql 中的 问号(?)
一连串 ?? 调试起来 真的很不方便rnrn在线等。。。。。rnrn
SQL语句是如何执行的?
在项目开发时,会经常写大量的SQL语句,可是为什么每次写SQL语句都有疑惑的感觉呢?后来我想了想,还是自己对SQL语句是如何被执行的没有弄清楚。比如写rnrn一个查询语句,语句里面有ORDER BY ,GROUP BY 等等。它具体是如何执行的,最rnrn终取出结果集的呢?总之,对于写SQL语句我仿佛找不到一个很好思路。对于我这样rnrn的问题,望各位大虾帮忙。rn
生成SQL插入语句(生成insert语句)
传入表得到插入的脚本语句,提高自己写插入语句的麻烦.数据管理者必备知识.
hibernate如何执行sql语句的insert动作?
如题。
Hibernate如何执行自定义SQL语句
一、通过Hibernate执行自定义SQL语句    使用Hibernate封装过的get()方法获取数据库信息,往往无法灵活的设置查询条件以及排序、分页等操作。所以我们可以使用Hibernate直接调用SQL语句。    1.配置Spring和Hibernate的xml <bean id="sessionFactory" class="org.springframework.orm...
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池