氟塑料离心泵www.buybeng.com

jquery教程http://www.software8.co/wzjs/jquery/

Hibernate JPA中insert插入数据后自动执行select last_insert_id()解决方法

本文出处:http://www.0769zzw.com/tec/channel-100/tec-3172.html,转载请注明。由于本人不定期会整理相关博文,会对相应内容作出完善。因此强烈建议在原始出处查看此文。
今天做项目遇到了一个问题,是以前没注意的。我用的是Spring MVC+ Hibernate JPA + MySQL数据库。在插入数据后SQL执行日志中会多出一条select语句:
Hibernate: insert into click_statstic (logDate, memoId, src, typeId) values (?, ?, ?, ?)  
Hibernate: select last_insert_id()  
表中有个主键是自增列。可是在以往的项目中,没发现有这样的问题。于是在网上各种找也找不到原因。心想可能是配置问题。
最终在persistence.xml配置文件中找到了这样一条配置:
<property name="hibernate.temp.use_jdbc_metadata_defaults" value="false" />  
把这条配置删除就没有了多余的select语句。具体原因和这样做的目的是什么不得而知。如果有知道的朋友请分享下~多谢了。

posted on 2013-03-07 19:13 你爸是李刚 阅读(2778) 评论(1)  编辑  收藏

评论

# re: Hibernate JPA中insert插入数据后自动执行select last_insert_id()解决方法[未登录] 2013-03-12 10:45 Shine

hibernate.temp.use_jdbc_metadata_defaults 默认为 true
这条配置开启后 Hibernate在获取connection之前,需要获取相应DB的META DATA信息,顾及下面的SQL就是与后面需要的META DATA有关;
下面是找到资料,仅供参考哈!:)


// 'hibernate.temp.use_jdbc_metadata_defaults' is a temporary magic value.
// The need for it is intended to be alleviated with future development, thus it is not defined as an Environment constant...
//
// it is used to control whether we should consult the JDBC metadata to determine
// certain Settings default values; it is useful to *not* do this when the database
// may not be available (mainly in tools usage).

boolean useJdbcMetadata = ConfigurationHelper.getBoolean( "hibernate.temp.use_jdbc_metadata_defaults", configValues, true );  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 
<2013年3月>
242526272812
3456789
10111213141516
17181920212223
24252627282930
31123456

导航

统计

常用链接

留言簿

随笔档案

文章档案

技术网站

行业网站

搜索

最新评论

阅读排行榜

评论排行榜

站长网 氟塑料离心泵 注塑机 液晶广告机