我执行了一个save方法之后为什么会输出两句hibernate语句呢?
Hibernate: select max(ACCOUNT_ID) from account
Hibernate: insert into financing.account (ACCOUNT_MONEY, ACCOUNT_TYPE, ACCOUNT_NOTE, ACCOUNT_DATE, ACCOUNT_NAME, USER_ID, ACCOUNT_ID) values (?, ?, ?, ?, ?, ?, ?)
为什么会有第一句呢?
Hibernate: select max(ACCOUNT_ID) from account
Hibernate: insert into financing.account (ACCOUNT_MONEY, ACCOUNT_TYPE, ACCOUNT_NOTE, ACCOUNT_DATE, ACCOUNT_NAME, USER_ID, ACCOUNT_ID) values (?, ?, ?, ?, ?, ?, ?)
为什么会有第一句呢?
比如:你保存了一个对象,但是在commit之前你又获得这个对象的size 或是取一个值。
那就会多出现一条语句。具体原因还是还是hibernate的持久化操作了。
帖你的配置文件出来看看
另外你调用的是saveOrUpdate()还是save()方法?
他先查询出你当前最大ID
插入数据的时候保证ID不重复
让hibernate自动管理主键,比较省事
但是这种方式不能用在分布式数据库上
楼上正解,你的主键是自动生成的,所以会出现两条SQL语句。第一条用于查询出最大的ID主键。建议采用序列或是自己(不是自动,设置主键生成方式)加1的方式!