该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2012-02-29
最后修改:2012-02-29
既然使用到了hibernate 楼主就把JPA加进去吧。springmvc spring jpa hibernate。
并且就不要提供建库脚本了,直接自动建库。 把楼主的源码下载下来了,在jetty服务器上运行不起来。启动也不报错, |
|
返回顶楼 | |
发表时间:2012-02-29
maoweiwer 写道 既然使用到了hibernate 楼主就把JPA加进去吧。springmvc spring jpa hibernate。
并且就不要提供建库脚本了,直接自动建库。 可以加 习惯了 自己手写脚本 |
|
返回顶楼 | |
发表时间:2012-02-29
黄浦江 写道 web.xml 的后一个web-app_2_4 改成web-app_2_5即可 当然 这是我电脑的环境
搞定了吗 |
|
返回顶楼 | |
发表时间:2012-02-29
搞定了 谢谢啊 我紧接着在后面不是说了么 呵呵 将后一个web-app_2_4 改成web-app_2_5即可
|
|
返回顶楼 | |
发表时间:2012-02-29
建议,Spring Data JPA不错,SpringSide已经换它了:)
|
|
返回顶楼 | |
发表时间:2012-03-01
最后修改:2012-03-01
江南白衣 写道 建议,Spring Data JPA不错,SpringSide已经换它了:)
Spring Data系列的,我回头看看,谢谢。 另外请教您个问题: 当使用Spring3.1.x 集成 hibernate4.x时, 再不使用OpenSessionInView模式下,Supports等自己不打开事务的传播行为 会报错: org.hibernate.HibernateException: No Session found for current thread 异常。 我仔细看了源代码: 在Hibernate3情况下 因为使用HibernateTemplate 它里面默认没有session时打开一个,而Hibernate4时 就不再默认打开一个。 也就是说在hibernate4要么使用Required或RequiredNew 或者OpenSessionInView。 代码如下: 在 Hibernate3中 HibernateTemplate中有如下代码 protected Session getSession() { if (isAlwaysUseNewSession()) { return SessionFactoryUtils.getNewSession(getSessionFactory(), getEntityInterceptor()); } else if (isAllowCreate()) {//默认是true,也就是即使你的传播行为是Supports也一定会有session存在的 return SessionFactoryUtils.getSession( getSessionFactory(), getEntityInterceptor(), getJdbcExceptionTranslator()); } else if (SessionFactoryUtils.hasTransactionalSession(getSessionFactory())) { return SessionFactoryUtils.getSession(getSessionFactory(), false); } else { try { return getSessionFactory().getCurrentSession(); } catch (HibernateException ex) { throw new DataAccessResourceFailureException("Could not obtain current Hibernate Session", ex); } } } 但我们使用的是Hibernate4原生API,使用SpringSessionContext获取session,而这个isAllowCreate选项默认为false /** * Retrieve the Spring-managed Session for the current thread, if any. */ public Session currentSession() throws HibernateException { try { return (org.hibernate.classic.Session) SessionFactoryUtils.doGetSession(this.sessionFactory, false);//最后的false即是 allowCreate值 } catch (IllegalStateException ex) { throw new HibernateException(ex.getMessage()); } } SessionFactoryUtils类 public static Session doGetSession(SessionFactory sessionFactory, boolean allowCreate) throws HibernateException, IllegalStateException { return doGetSession(sessionFactory, null, null, allowCreate); } |
|
返回顶楼 | |
发表时间:2012-03-01
我还木有使用H4,而且也一直都是用原生API的,好久没碰过HibernateTemplate
|
|
返回顶楼 | |
发表时间:2012-03-01
江南白衣 写道 我还木有使用H4,而且也一直都是用原生API的,好久没碰过HibernateTemplate
HibernateTemplate 已经被废弃了... 不推荐使用... |
|
返回顶楼 | |
发表时间:2012-03-01
江南白衣 写道 我还木有使用H4,而且也一直都是用原生API的,好久没碰过HibernateTemplate
hibernate4这种 情况 应该算是bug吧! |
|
返回顶楼 | |
发表时间:2012-03-01
sodart 写道 江南白衣 写道 我还木有使用H4,而且也一直都是用原生API的,好久没碰过HibernateTemplate
HibernateTemplate 已经被废弃了... 不推荐使用... spring3集成 Hibernate4 根本就没有提供HibernateTemplate |
|
返回顶楼 | |