<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Shoopman &#187; Spring</title>
	<atom:link href="http://blog.shoopman.org/tag/spring/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.shoopman.org</link>
	<description>Shoopman&#039;s Blog</description>
	<lastBuildDate>Thu, 15 Jul 2010 08:32:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>基于注解与自动扫描的某些实体没被映射的原因之一</title>
		<link>http://blog.shoopman.org/2009/07/16/a-reason-about-the-problem-that-an-entity-is-not-mapped.html</link>
		<comments>http://blog.shoopman.org/2009/07/16/a-reason-about-the-problem-that-an-entity-is-not-mapped.html#comments</comments>
		<pubDate>Thu, 16 Jul 2009 21:28:20 +0000</pubDate>
		<dc:creator>Shoopman</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[注解]]></category>

		<guid isPermaLink="false">/2009/07/16/a-reason-about-the-problem-that-an-entity-is-not-mapped.html</guid>
		<description><![CDATA[&#160;&#160;&#160; 在尝试修改基于SpringSide 3.1.3的mini-web过程中，又遇到了一个奇怪的问题。一个hql如下：
StringBuilder hql = new StringBuilder();      hql.append(&#34;SELECT new &#34;);       hql.append(CommentBean.class.getName());       hql.append(&#34; (o,u.name,u.image) &#34;);       hql.append(&#34; FROM &#34;);       hql.append(Comment.class.getSimpleName()).append(&#34; o, &#34;);       [...]]]></description>
			<content:encoded><![CDATA[<p>&#160;&#160;&#160; 在尝试修改基于SpringSide 3.1.3的mini-web过程中，又遇到了一个奇怪的问题。一个hql如下：</p>
<blockquote><p>StringBuilder hql = new StringBuilder();      <br />hql.append(&quot;SELECT new &quot;);       <br />hql.append(CommentBean.class.getName());       <br />hql.append(&quot; (o,u.name,u.image) &quot;);       <br />hql.append(&quot; FROM &quot;);       <br />hql.append(Comment.class.getSimpleName()).append(&quot; o, &quot;);       <br />hql.append(User.class.getSimpleName()).append(&quot; u &quot;);       <br />hql.append(&quot; WHERE o.userId=u.id AND o.infoId=? &quot;);       <br />hql.append(&quot; ORDER BY o.commentTime DESC&quot;); </p>
</blockquote>
<p>Comment这个实体类的全限定名是：org.shoopman.entity.Comment</p>
<p>但在运行时却报错：</p>
<blockquote><p>Comment is not mapped [SELECT new org.shoopman.service.dto.CommentBean (o,u.name,u.image)&#160; FROM Comment o, org.shoopman.entity.user.User u&#160; WHERE o.userId=u.id AND o.infoId=?&#160; ORDER BY o.commentTime DESC]      <br />org.hibernate.hql.ast.QuerySyntaxException: Comment is not mapped [SELECT new org.shoopman.service.dto.CommentBean (o,u.name,u.image)&#160; FROM Comment o, org.shoopman.entity.user.User u&#160; WHERE o.userId=u.id AND o.infoId=?&#160; ORDER BY o.commentTime DESC]       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.hibernate.hql.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:181)       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.hibernate.hql.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:110)       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.hibernate.hql.ast.tree.FromClause.addFromElement(FromClause.java:93)       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.hibernate.hql.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:277)</p>
<p>&#160;</p>
</blockquote>
<p>而其他实体的查询却没有问题。先看一下spring的applicationContext.xml关于Hibernate的配置：</p>
<blockquote><p>&lt;bean id=&quot;sessionFactory&quot; class=&quot;org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean&quot;&gt;      <br />&#160;&#160;&#160; &lt;property name=&quot;dataSource&quot; ref=&quot;dataSource&quot; /&gt;       <br />&#160;&#160;&#160; &lt;property name=&quot;namingStrategy&quot;&gt;       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;bean class=&quot;org.hibernate.cfg.ImprovedNamingStrategy&quot; /&gt;       <br />&#160;&#160;&#160; &lt;/property&gt;       <br />&#160;&#160;&#160; &lt;property name=&quot;hibernateProperties&quot;&gt;       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;props&gt;       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;prop key=&quot;hibernate.dialect&quot;&gt;${hibernate.dialect}&lt;/prop&gt;       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;prop key=&quot;hibernate.show_sql&quot;&gt;${hibernate.show_sql}&lt;/prop&gt;       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;prop key=&quot;hibernate.format_sql&quot;&gt;${hibernate.format_sql}&lt;/prop&gt;       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;prop key=&quot;hibernate.cache.provider_class&quot;&gt;org.hibernate.cache.EhCacheProvider       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/prop&gt;       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;prop key=&quot;hibernate.cache.provider_configuration_file_resource_path&quot;&gt;${hibernate.ehcache_config_file}&lt;/prop&gt;       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/props&gt;       <br />&#160;&#160;&#160; &lt;/property&gt;       <br />&#160;&#160;&#160; &lt;property name=&quot;packagesToScan&quot; value=&quot;<font color="#ff0000">org.shoopman.entity.*</font>&quot; /&gt;       <br />&lt;/bean&gt; </p>
</blockquote>
<p>&#160;&#160;&#160; 问题就在这个自动描述packagesToScan的配置上。如上的配置，Spring只会扫描到org.shoopman.entity这个包下的子包里的实体类，而直接放在这个包下的实体却没有描述。</p>
<p>&#160;&#160;&#160; 无奈，只好在新建一个org.shoopman.entity.common包，把Comment移到此包下。到此，问题解决。</p>
<p>&#160;</p>
<p>&#160;&#160;&#160; 题外话：看上面的hql生成过程，在使用User这个实体类时，我用的是User.class.getSimpleName()，为什么Hibernate在生成hql却是全限定名。当把Comment移到common包下，控制台里打印出来的hql又是SimpleName。这是Hibernate的一个容错处理吗？</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.shoopman.org/2009/07/16/a-reason-about-the-problem-that-an-entity-is-not-mapped.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SessionListener与Spring</title>
		<link>http://blog.shoopman.org/2009/07/10/session-listener-and-spring-context.html</link>
		<comments>http://blog.shoopman.org/2009/07/10/session-listener-and-spring-context.html#comments</comments>
		<pubDate>Fri, 10 Jul 2009 17:07:44 +0000</pubDate>
		<dc:creator>Shoopman</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[SessionLisener]]></category>
		<category><![CDATA[Spring]]></category>

		<guid isPermaLink="false">/2009/07/10/session-listener-and-spring-context.html</guid>
		<description><![CDATA[&#160;&#160;&#160; 在SessionListener里，需要使用被Spring管理起来的其他Bean，如某些DAO或者Manager、Service。在实现这个过程是这样的：
&#160;&#160;&#160; 1.把SessionListener也交给Spring来管理。
&#160;&#160;&#160; 由于使用了Spring Annotation，所以在SessionListener上加了@Service标记，并且把需要用到的其他Bean在SessionListener中定义为成员变量并加上@Autowried。但结果是失败的，SessionListener里的其他Bean没有被注入。
&#160;&#160;&#160; 2.直接通过Spring的Context来获得相应的DAO等的实例。
&#160;&#160;&#160; Spring Annotation默认是ByType的方式来注入Bean，因此写了一个静态方法来获取相关的Bean，不知道有没有其他更好的办法，请告诉我吧：
/**      * 根据类型从Spring中取得Bean       *       * @param &#60;T&#62;&#160;&#160;&#160; Bean的类型       * @param beanClass&#160;&#160;&#160; Bean的Class对象       * @param servletContext&#160;&#160;&#160; * @return   [...]]]></description>
			<content:encoded><![CDATA[<p>&#160;&#160;&#160; 在SessionListener里，需要使用被Spring管理起来的其他Bean，如某些DAO或者Manager、Service。在实现这个过程是这样的：</p>
<p>&#160;&#160;&#160; 1.把SessionListener也交给Spring来管理。</p>
<p>&#160;&#160;&#160; 由于使用了Spring Annotation，所以在SessionListener上加了@Service标记，并且把需要用到的其他Bean在SessionListener中定义为成员变量并加上@Autowried。但结果是失败的，SessionListener里的其他Bean没有被注入。</p>
<p>&#160;&#160;&#160; 2.直接通过Spring的Context来获得相应的DAO等的实例。</p>
<p>&#160;&#160;&#160; Spring Annotation默认是ByType的方式来注入Bean，因此写了一个静态方法来获取相关的Bean，不知道有没有其他更好的办法，请告诉我吧：</p>
<blockquote><p>/**      <br />* 根据类型从Spring中取得Bean       <br />*       <br />* @param &lt;T&gt;&#160;&#160;&#160; Bean的类型       <br />* @param beanClass&#160;&#160;&#160; Bean的Class对象       <br />* @param servletContext&#160;&#160;&#160; <br />* @return       <br />*/       <br />@SuppressWarnings(&quot;unchecked&quot;)       <br />public static &lt;T&gt; T getSpringBean(Class&lt;T&gt; beanClass,       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; ServletContext servletContext) {       <br />&#160;&#160;&#160; WebApplicationContext appContext = (WebApplicationContext) servletContext       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; .getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);       <br />&#160;&#160;&#160; Map beans = appContext.getBeansOfType(beanClass);       <br />&#160;&#160;&#160; if (beans == null || beans.isEmpty()) {       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; return null;       <br />&#160;&#160;&#160; }       <br />&#160;&#160;&#160; return (T) beans.values().toArray()[0];       <br />} </p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.shoopman.org/2009/07/10/session-listener-and-spring-context.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spring @Autowired 的使用问题</title>
		<link>http://blog.shoopman.org/2009/05/26/a-question-about-spring-autowired.html</link>
		<comments>http://blog.shoopman.org/2009/05/26/a-question-about-spring-autowired.html#comments</comments>
		<pubDate>Tue, 26 May 2009 08:29:59 +0000</pubDate>
		<dc:creator>Shoopman</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[注解]]></category>

		<guid isPermaLink="false">/2009/05/26/a-question-about-spring-autowired.html</guid>
		<description><![CDATA[&#160;&#160;&#160; 最近小小的在研究一下SpringSide3的代码，并对照着它的mini-web示例项目开始了测试。开始还是比较顺利的， mini-web在tomcat6 + mysql5里跑起来了，测试用例也没有问题，于是开始动手改造。
&#160;&#160;&#160; 但是改了一下，再运行UserManager的测试用例，却报了以下错误：
[main] ERROR org.springframework.test.context.TestContextManager &#8211; Caught exception while allowing TestExecutionListener [org.springframework.test.context.support.DependencyInjectionTestExecutionListener@1904e0d] to prepare test instance [testCreate(cn.cu.manager.UserManagerTest)]      org.springframework.beans.factory.BeanCreationException: Error creating bean with name &#8216;cn.cu.manager.UserManagerTest&#8217;: Autowiring of fields failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private cn.cu.manager.user.UserManager cn.cu.manager.UserManagerTest.userManager; nested exception is java.lang.IllegalArgumentException     [...]]]></description>
			<content:encoded><![CDATA[<p>&#160;&#160;&#160; 最近小小的在研究一下SpringSide3的代码，并对照着它的mini-web示例项目开始了测试。开始还是比较顺利的， mini-web在tomcat6 + mysql5里跑起来了，测试用例也没有问题，于是开始动手改造。</p>
<p>&#160;&#160;&#160; 但是改了一下，再运行UserManager的测试用例，却报了以下错误：</p>
<blockquote><p>[main] ERROR org.springframework.test.context.TestContextManager &#8211; Caught exception while allowing TestExecutionListener [org.springframework.test.context.support.DependencyInjectionTestExecutionListener@1904e0d] to prepare test instance [testCreate(cn.cu.manager.UserManagerTest)]      <br />org.springframework.beans.factory.BeanCreationException: Error creating bean with name &#8216;cn.cu.manager.UserManagerTest&#8217;: Autowiring of fields failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private cn.cu.manager.user.UserManager cn.cu.manager.UserManagerTest.userManager; nested exception is java.lang.IllegalArgumentException       <br />&#160;&#160;&#160; at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessAfterInstantiation(AutowiredAnnotationBeanPostProcessor.java:243)       <br />&#160;&#160;&#160; at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:959)       <br />&#160;&#160;&#160; at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireBeanProperties(AbstractAutowireCapableBeanFactory.java:329)       <br />&#160;&#160;&#160; at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:110)       <br />&#160;&#160;&#160; at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75)       <br />&#160;&#160;&#160; at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:255)       <br />&#160;&#160;&#160; at org.springframework.test.context.junit38.AbstractJUnit38SpringContextTests.runBare(AbstractJUnit38SpringContextTests.java:183)       <br />&#160;&#160;&#160; at junit.framework.TestResult$1.protect(TestResult.java:106)       <br />&#160;&#160;&#160; at junit.framework.TestResult.runProtected(TestResult.java:124)       <br />&#160;&#160;&#160; at junit.framework.TestResult.run(TestResult.java:109)       <br />&#160;&#160;&#160; at junit.framework.TestCase.run(TestCase.java:120)       <br />&#160;&#160;&#160; at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)       <br />&#160;&#160;&#160; at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)       <br />&#160;&#160;&#160; at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)       <br />&#160;&#160;&#160; at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)       <br />&#160;&#160;&#160; at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)       <br />&#160;&#160;&#160; at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)       <br />Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private cn.cu.manager.user.UserManager cn.cu.manager.UserManagerTest.userManager; nested exception is java.lang.IllegalArgumentException       <br />&#160;&#160;&#160; at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:435)       <br />&#160;&#160;&#160; at org.springframework.beans.factory.annotation.InjectionMetadata.injectFields(InjectionMetadata.java:105)       <br />&#160;&#160;&#160; at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessAfterInstantiation(AutowiredAnnotationBeanPostProcessor.java:240)       <br />&#160;&#160;&#160; &#8230; 16 more       <br />Caused by: java.lang.IllegalArgumentException       <br />&#160;&#160;&#160; at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63)       <br />&#160;&#160;&#160; at java.lang.reflect.Field.set(Field.java:656)       <br />&#160;&#160;&#160; at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:431)       <br />&#160;&#160;&#160; &#8230; 18 more</p>
</blockquote>
<p>&#160;&#160;&#160; 只得到网上找答案，未果，不过还是找到了点<a href="http://www.javaeye.com/topic/43165" target="_blank">有价值的东西</a>：</p>
<blockquote><p>不使用自动装配。必须通过ref元素指定依赖，这是默认设置。由于显式指定协作者可以使配置更灵活、更清晰，因此对于较大的部署配置，推荐采用该设置。而且在某种程度上，它也是系统架构的一种文档形式。      <br />byName 根据属性名自动装配。此选项将检查容器并根据名字查找与属性完全一致的bean，并将其与属性自动装配。例如，在bean定义中将autowire设置为by name，而该bean包含master属性（同时提供setMaster(..)方法），Spring就会查找名为master的bean定义，并用它来装配给master属性。       <br />byType 如果容器中存在一个与指定属性类型相同的bean，那么将与该属性自动装配。如果存在多个该类型的bean，那么将会抛出异常，并指出不能使用byType方式进行自动装配。若没有找到相匹配的bean，则什么事都不发生，属性也不会被设置。如果你不希望这样，那么可以通过设置dependency-check=&quot;objects&quot;让Spring抛出异常。       <br />constructor 与byType的方式类似，不同之处在于它应用于构造器参数。如果在容器中没有找到与构造器参数类型一致的bean，那么将会抛出异常。       <br />autodetect 通过bean类的自省机制（introspection）来决定是使用constructor还是byType方式进行自动装配。如果发现默认的构造器，那么将使用byType方式。       <br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-       <br />理解自动装配的优缺点是很重要的。其中优点包括：       <br />自动装配能显著减少配置的数量。不过，采用bean模板也可以达到同样的目的。       <br />自动装配可以使配置与java代码同步更新。例如，如果你需要给一个java类增加一个依赖，那么该依赖将被自动实现而不需要修改配置。因此强烈推荐在开发过程中采用自动装配，而在系统趋于稳定的时候改为显式装配的方式。       <br />自动装配的一些缺点：       <br />尽管自动装配比显式装配更神奇，但是，正如上面所提到的，Spring会尽量避免在装配不明确的时候进行猜测，因为装配不明确可能出现难以预料的结果，而且Spring所管理的对象之间的关联关系也不再能清晰的进行文档化。       <br />对于那些根据Spring配置文件生成文档的工具来说，自动装配将会使这些工具没法生成依赖信息。       <br />如果采用by type方式自动装配，那么容器中类型与自动装配bean的属性或者构造函数参数类型一致的bean只能有一个，如果配置可能存在多个这样的bean，那么就要考虑采用显式装配了。       <br />尽管使用autowire没有对错之分，但是能在一个项目中保持一定程度的一致性是最好的做法。例如，通常情况下如果没有使用自动装配，那么仅自动装配一个或两个bean定义可能会引起开发者的混淆。 </p>
</blockquote>
<p>&#160;&#160;&#160; 想了想自己对mini-web的改造经过，觉得可能问题出在一个接口上面：我把EntityManager提出了个接口IEntityManager</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.shoopman.org/2009/05/26/a-question-about-spring-autowired.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google App Engine 支持 Spring-ORM(2.5.6) 的办法</title>
		<link>http://blog.shoopman.org/2009/04/15/the-way-how-google-app-engine-support-spring-orm.html</link>
		<comments>http://blog.shoopman.org/2009/04/15/the-way-how-google-app-engine-support-spring-orm.html#comments</comments>
		<pubDate>Wed, 15 Apr 2009 22:08:55 +0000</pubDate>
		<dc:creator>Shoopman</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[GAE]]></category>
		<category><![CDATA[ORM]]></category>
		<category><![CDATA[Spring]]></category>

		<guid isPermaLink="false">/2009/04/15/the-way-how-google-app-engine-support-spring-orm.html</guid>
		<description><![CDATA[GAE不支持spring-orm是因为引用了javax.naming包里的类，而这些类是不被GAE支持的。在spring-orm-2.5.6.jar移去一下类则可：
PersistenceAnnotationBeanPostProcessor.classPersistenceAnnotationBeanPostProcessor$PersistenceElement.classPersistenceAnnotationBeanPostProcessor$2.classPersistenceAnnotationBeanPostProcessor$1.class

这个我还没有验证过。出自Google Group。
]]></description>
			<content:encoded><![CDATA[<p>GAE不支持spring-orm是因为引用了javax.naming包里的类，而这些类是不被GAE支持的。在spring-orm-2.5.6.jar移去一下类则可：</p>
<blockquote><p>PersistenceAnnotationBeanPostProcessor.class<br />PersistenceAnnotationBeanPostProcessor$PersistenceElement.class<br />PersistenceAnnotationBeanPostProcessor$2.class<br />PersistenceAnnotationBeanPostProcessor$1.class</p>
</blockquote>
<p>这个我还没有验证过。出自<a href="http://groups.google.com/group/google-appengine-java/browse_thread/thread/187d41712ec1d394" target="_blank"><span style="color: #b85b5a;">Google Group</span></a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.shoopman.org/2009/04/15/the-way-how-google-app-engine-support-spring-orm.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
