我在做session.save的时候
hibernate发出2条语句
首先插入一条。然后又去修改。这是怎么回事。
Hibernate: insert into eeline.User (userCity, user_lastloginip, user_lasttime, user_name, user_nickname, user_password, user_regip, user_stauts) values (?, ?, ?, ?, ?, ?, ?, ?)
Hibernate: update eeline.User set userCity=?, user_lastloginip=?, user_lasttime=?, user_name=?, user_nickname=?, user_password=?, user_regip=?, user_stauts=? where user_id=?贴代码
public PK save(T entity) {
return (PK) getSession().save(entity);
}
protected Session getSession() {
Session session = null;
try {
session = sessionFactory.getCurrentSession();
} catch (HibernateException e) {
e.printStackTrace();
}
return session;
}HibernateJava

解决方案 »

  1.   

    你用的hibernate4的吧,你getcurrentsession如果是交给spring管理的话,就可能有这个问题
      

  2.   

    不应该,你看一下你操作save时候有没有其它逻辑代码关于更新的。如果实在不行,你写个junit,只测试一下那个save方法,应该就知道哪里的问题!
      

  3.   


    是hibernate4,有没有见过相关原因的资料呢。google了一天都没看到具体的原因
      

  4.   


    hibernate.connection.pool_size 1hibernate.proxool.pool_alias pool1hibernate.format_sql false ## add comments to the generated SQLhibernate.use_sql_comments true ## set the maximum depth of the outer join fetch treehibernate.max_fetch_depth 1hibernate.jdbc.batch_versioned_data truehibernate.jdbc.use_streams_for_binary truehibernate.cache.region_prefix hibernate.testhibernate.cache.provider_class org.hibernate.cache.HashtableCacheProvider c3p0.acquireIncrement=3c3p0.idleConnectionTextPeriod=900c3p0.minPoolSize=2c3p0.maxPoolSize=50c3p0.maxStatements=100c3p0.numHelperThreads=10c3p0.maxIdleTime=600c3p0.initialPoolSize=3
    没发现有可疑的配置。你帮我看看。能不能回忆出来