<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>zzxplayful</title>
    <description></description>
    <link>http://zzxplayful.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>CAS取消https认证的方式</title>
        <author>zzxplayful</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zzxplayful.javaeye.com">zzxplayful</a>&nbsp;
          链接：<a href="http://zzxplayful.javaeye.com/blog/226161" style="color:red;">http://zzxplayful.javaeye.com/blog/226161</a>&nbsp;
          发表时间: 2008年08月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近，在做CAS单点登陆的一个模块，由于公司的产品太多，各个系统都要部署，在开发中Https的证书的部署比较麻烦，所以，打算把CAS的Https去掉。具体的修改如下<br /><br />1.修改cas-servlet.xml<br /><pre name="code" class="java">
&lt;bean id="warnCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
		p:cookieSecure="true"
		p:cookieMaxAge="-1"
		p:cookieName="CASPRIVACY"
		p:cookiePath="/cas" />
	
	&lt;bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
		p:cookieSecure="true "
		p:cookieMaxAge="-1"
		p:cookieName="CASTGC"
		p:cookiePath="/cas" />

</pre><br />把上面连个bean中的p:cookieSecure="true "修改为p:cookieSecure="false"<br />2.修改deployerConfigContext.xml<br /><pre name="code" class="java">
&lt;bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
					p:httpClient-ref="httpClient" />
</pre><br /><br />添加p:requireSecurep="httpClient"<br /><br />3.修改casclient的客户端<br /><br />修改客户端的https验证<br />(1).edu.yale.its.tp.cas.client.filter.edu.yale.its.tp.cas.client.filter<br /><br /><pre name="code" class="java">
if (! casValidate.startsWith("https://")){
            throw new ServletException("validateUrl must start with https://, its current value is [" + casValidate + "]");
        }
if (casServiceUrl != null){
            if (! (casServiceUrl.startsWith("https://")|| (casServiceUrl.startsWith("http://") ))){
                throw new ServletException("service URL must start with http:// or https://; its current value is [" + casServiceUrl + "]");
            }
        }

</pre><br />把这两段内容注释掉<br /><br />(2).修改edu.yale.its.tp.cas.util.SecureURL<br /><br /><pre name="code" class="java">
if (!u.getProtocol().equals("https")){
            	// IOException may not be the best exception we could throw here
            	// since the problem is with the URL argument we were passed, not
            	// IO. -awp9
            	log.error("retrieve(" + url + ") on an illegal URL since protocol was not https.");
							throw new IOException("only 'https' URLs are valid for this method");
            }

</pre><br /><br />把这段内容注释掉
          <br/>
          <span style="color:red;">
            <a href="http://zzxplayful.javaeye.com/blog/226161#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 09 Aug 2008 12:35:15 +0800</pubDate>
        <link>http://zzxplayful.javaeye.com/blog/226161</link>
        <guid>http://zzxplayful.javaeye.com/blog/226161</guid>
      </item>
      <item>
        <title>spring事物</title>
        <author>zzxplayful</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zzxplayful.javaeye.com">zzxplayful</a>&nbsp;
          链接：<a href="http://zzxplayful.javaeye.com/blog/224493" style="color:red;">http://zzxplayful.javaeye.com/blog/224493</a>&nbsp;
          发表时间: 2008年08月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Spring 自动关闭Connection 与<br /><br /><pre name="code" class="java">
&lt;tx:advice id="txAdvice" transaction-manager="txManager">
		&lt;tx:attributes>
			&lt;!--&lt;tx:method name="*TM" rollback-for="com.ultrapower.accredit.common.exception.CustomException"/>
			&lt;tx:method name="*Batch" rollback-for="com.ultrapower.accredit.common.exception.CustomException"/>
			&lt;tx:method name="save*" />
			&lt;tx:method name="remove*" />
			&lt;tx:method name="insert*" />
			&lt;tx:method name="update*" />
			&lt;tx:method name="delete*" />
			&lt;tx:method name="*" read-only="true" />
		-->
			&lt;tx:method name="save*" />
		&lt;/tx:attributes>
	&lt;/tx:advice>
</pre><br />无关，tx:advice 只与事物有关<br /><br />数据库连接Connection的关闭与tx:advice和&lt;aop:config>无关<br /><br /><pre name="code" class="java">
&lt;aop:config>
		&lt;!--&lt;aop:pointcut id="allDAO" expression="execution(* com.ultrapower.accredit.dao.*.*(..))"/>
		&lt;aop:advisor advice-ref="txAdvice" pointcut-ref="allDAO"/>
		-->&lt;aop:advisor pointcut="execution(* com.ultrapower.pasm.log.dao.impl.*.*(..))" advice-ref="txAdvice" />
	&lt;/aop:config>
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://zzxplayful.javaeye.com/blog/224493#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 05 Aug 2008 12:44:13 +0800</pubDate>
        <link>http://zzxplayful.javaeye.com/blog/224493</link>
        <guid>http://zzxplayful.javaeye.com/blog/224493</guid>
      </item>
      <item>
        <title>activeMQ 服务器重启 client接受不到消息</title>
        <author>zzxplayful</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zzxplayful.javaeye.com">zzxplayful</a>&nbsp;
          链接：<a href="http://zzxplayful.javaeye.com/blog/218111" style="color:red;">http://zzxplayful.javaeye.com/blog/218111</a>&nbsp;
          发表时间: 2008年07月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          采用activeMQ5.0当服务端重启的之后，客户端一定要重启才能收到消息，如果要是有多个客户端，那每次重启activeMQ5.0服务端都要重启客户端，是不行的，不知道大家有什么好办法。<br />   在网上看了下有人说是spring的org.springframework.jms.connection.SingleConnectionFactory的连接池的问题，可是我换成了activeMQ的连接池也还是需要重启（org.apache.activemq.pool.PooledConnectionFactory）<br /><br /><br />只要在<br /><br />&lt;bean id="connectionFactory"  <br />         class="org.apache.activemq.ActiveMQConnectionFactory">  <br />        &lt;property name="brokerURL" value="tcp://192.168.2.26:61616" />  <br />&lt;/bean><br />在 tcp://192.168.2.26:61616 改成 failover:tcp://192.168.2.26:61616 就可以了
          <br/>
          <span style="color:red;">
            <a href="http://zzxplayful.javaeye.com/blog/218111#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 22 Jul 2008 14:26:53 +0800</pubDate>
        <link>http://zzxplayful.javaeye.com/blog/218111</link>
        <guid>http://zzxplayful.javaeye.com/blog/218111</guid>
      </item>
      <item>
        <title>RM! 异常 Connection refused to host: 127.0.0.1</title>
        <author>zzxplayful</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zzxplayful.javaeye.com">zzxplayful</a>&nbsp;
          链接：<a href="http://zzxplayful.javaeye.com/blog/213902" style="color:red;">http://zzxplayful.javaeye.com/blog/213902</a>&nbsp;
          发表时间: 2008年07月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>写一个rmi客户端程序，你可能会收到如标题这样的异常。这个问题其实是由rmi服务器端程序造成的。</p>
<p>客户端程序向服务端请求一个对象的时候，返回的stub对象里面包含了服务器的hostname，客户端的后续操作根据这个hostname来连接服务器端。要想知道这个hostname具体是什么值可以在服务器端bash中打入指令：<br /><em>hostname -i</em></p>
<p>如果返回的是127.0.0.1，那么你的客户端肯定会抛如标题的异常了。</p>
<p>解决这个问题有两个方式：<br />1 修改/etc/hosts<br />找到127.0.0.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hostxxxxx这样的字样。把127.0.0.1改成真实的，可供其他机器连接的ip。</p>
<p>这样客户端就能得到真实的ip了。</p>
<p>2 在rmi服务器端程序启动脚本中加上两行，显式指定hostname。我的脚本：<br />hostname=`hostname`</p>
<p>java -cp $CLASSPATH -Djava.rmi.server.codebase=$codebase -Djava.security.policy=$PROJECT_HOME/se_server/conf/se_server.policy <strong>-Djava.rmi.server.hostname=$hostname</strong> com.abc.server.StartServer &gt; $PROJECT_HOME/se_server/logs/init.log 2&gt;&amp;1 &amp; </p>
<p>不过该方式有个局限，其他机器肯定能识别ip，但是可能无法识别hostname。</p>
<p>当然，你也可以直接写死这个hostname，比如：<strong>-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx。 </strong>这样最省力，就是少点灵活性.</p>
          <br/>
          <span style="color:red;">
            <a href="http://zzxplayful.javaeye.com/blog/213902#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 11 Jul 2008 13:53:53 +0800</pubDate>
        <link>http://zzxplayful.javaeye.com/blog/213902</link>
        <guid>http://zzxplayful.javaeye.com/blog/213902</guid>
      </item>
      <item>
        <title>关于cas的java客户端</title>
        <author>zzxplayful</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zzxplayful.javaeye.com">zzxplayful</a>&nbsp;
          链接：<a href="http://zzxplayful.javaeye.com/blog/166419" style="color:red;">http://zzxplayful.javaeye.com/blog/166419</a>&nbsp;
          发表时间: 2008年03月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          问一个关于cas客户端的问题，我们的客户端是java的。所以采用CASFilter对相应的页面进行了过滤。这些东西都已经做好了。<br />    可是在主页上要显示用户的登陆信息。但是主页上也不能对用CASFilter进行过滤啊。<br />    不如我现在有A，B两个应用。当用户C在A应用中请求cas登陆，这时C用户在A系统中登陆了，但是当C用户去访问B应用的一个没有被CASFilter过滤的页面时，该页面不会显示出用户的登陆信息。那我如何才能判断出用户是否已经等录了呢？
          <br/>
          <span style="color:red;">
            <a href="http://zzxplayful.javaeye.com/blog/166419#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 01 Mar 2008 17:22:31 +0800</pubDate>
        <link>http://zzxplayful.javaeye.com/blog/166419</link>
        <guid>http://zzxplayful.javaeye.com/blog/166419</guid>
      </item>
      <item>
        <title>je分词的问题</title>
        <author>zzxplayful</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zzxplayful.javaeye.com">zzxplayful</a>&nbsp;
          链接：<a href="http://zzxplayful.javaeye.com/blog/143538" style="color:red;">http://zzxplayful.javaeye.com/blog/143538</a>&nbsp;
          发表时间: 2007年11月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial">我现在用的是<font face="Arial">je-analysis-1.5.2.jar的分词，当我建立索引大约有几百条的时候，就出现一下异常，看看，是什么原因？谢谢了</font></font></p>
<p><font face="Arial">java.lang.ArrayIndexOutOfBoundsException: 1056<br />
&nbsp;at jeasy.analysis.lIIllIlIlIIIllll._$3(Unknown Source:264)<br />
&nbsp;at jeasy.analysis.lIIllIlIlIIIllll._$2(Unknown Source:143)<br />
&nbsp;at jeasy.analysis.lIIllIlIlIIIllll._$1(Unknown Source:58)<br />
&nbsp;at jeasy.analysis.lIIllIlIlIIIllll.next(Unknown Source:38)<br />
&nbsp;at org.apache.lucene.analysis.StopFilter.next(StopFilter.java:107)<br />
&nbsp;at org.apache.lucene.index.DocumentWriter.invertDocument(DocumentWriter.java:219)<br />
&nbsp;at org.apache.lucene.index.DocumentWriter.addDocument(DocumentWriter.java:95)<br />
&nbsp;at org.apache.lucene.index.IndexWriter.buildSingleDocSegment(IndexWriter.java:1013)<br />
&nbsp;at org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:1001)<br />
&nbsp;at org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:983)<br />
&nbsp;at com.hotct.search.core.IndexProcesser.createIndex(IndexProcesser.java:125)<br />
&nbsp;at com.hotct.search.app.cms.index.ArticleIndexProcesser.createArticleIndex(ArticleIndexProcesser.java:49)<br />
&nbsp;at com.hotct.search.app.cms.index.ArticleIndexProcesser.getPageAritcle(ArticleIndexProcesser.java:74)<br />
&nbsp;at com.hotct.search.app.cms.index.ArticleIndexProcesser.main(ArticleIndexProcesser.java:82)</font></p>
          <br/>
          <span style="color:red;">
            <a href="http://zzxplayful.javaeye.com/blog/143538#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 26 Nov 2007 11:00:58 +0800</pubDate>
        <link>http://zzxplayful.javaeye.com/blog/143538</link>
        <guid>http://zzxplayful.javaeye.com/blog/143538</guid>
      </item>
      <item>
        <title>Heritrix多线程的问题</title>
        <author>zzxplayful</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zzxplayful.javaeye.com">zzxplayful</a>&nbsp;
          链接：<a href="http://zzxplayful.javaeye.com/blog/141272" style="color:red;">http://zzxplayful.javaeye.com/blog/141272</a>&nbsp;
          发表时间: 2007年11月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          我现在是用一台主机抓取数据，所以我想把Heritrix的链接散列到多个线程中，可是当我散列的ELFHashQueueAssignmentPolicy写好后，第一次执行的时候，只能解析出30个dns：任务就自动的结束了，可是，当第二次或是第三次的时候，就可以实现多个线程了 <br />另外我已经把Heritrix.properties文件和AbstractFrontier中相应的位置都已经改了，希望您能帮我看看，谢谢了。<br /><br /><br />/*******************************************************************************<br /> * 文件说明: <br /> * <br /> * 项目名: WebCrawler<br /> * 文件名: ELFHashAssignmentPolicy.java<br /> * 包名: com.hotct.heritrixExt.common.frontier<br /> * <br /> * 创建人: zhangzhenxin<br /> * 创建时间: 下午03:50:01<br /> * 创建日期: 2007-10-30<br /> ******************************************************************************/<br />package com.hotct.heritrixExt.common.frontier;<br /><br />import java.util.logging.Level;<br />import java.util.logging.Logger;<br /><br />import org.apache.commons.httpclient.URIException;<br />import org.archive.crawler.datamodel.CandidateURI;<br />import org.archive.crawler.framework.CrawlController;<br />import org.archive.crawler.frontier.HostnameQueueAssignmentPolicy;<br />import org.archive.crawler.frontier.QueueAssignmentPolicy;<br />import org.archive.net.UURI;<br />import org.archive.net.UURIFactory;<br /><br />/**<br /> * &lt;h>类型描述&lt;/h><br /> * <br /> * @author zhangzhenxin<br /> * @date 2007-10-30<br /> */<br />public class ELFHashAssignmentPolicy extends QueueAssignmentPolicy {<br /><br />	private static final Logger logger = Logger<br />			.getLogger(ELFHashAssignmentPolicy.class.getName());<br /><br />	private static String DEFAULT_CLASS_KEY = "default...";<br /><br />	private static final String DNS = "dns";<br />	/**<br />	 * <br />	 */<br />	@Override<br />	public String getClassKey(CrawlController controller, CandidateURI cauri) {<br />		String uri = cauri.getUURI().toString();<br />		String scheme = cauri.getUURI().getScheme();<br />		String candidate = null;<br />		<br />		try {<br />			if (scheme.equals(DNS)) {<br />				if (cauri.getVia() != null) {<br />					// Special handling for DNS: treat as being<br />					// of the same class as the triggering URI.<br />					// When a URI includes a port, this ensures<br />					// the DNS lookup goes atop the host:port<br />					// queue that triggered it, rather than<br />					// some other host queue<br />					UURI viaUuri = UURIFactory.getInstance(cauri.flattenVia());<br />					candidate = viaUuri.getAuthorityMinusUserinfo();<br />					// adopt scheme of triggering URI<br />					scheme = viaUuri.getScheme();<br />				} else {<br />					candidate = cauri.getUURI().getReferencedHost();<br />				}<br />			} else {<br />//				String uri = cauri.getUURI().toString();<br />				long hash = ELFHash(uri);<br />				candidate = Long.toString(hash % 100);<br />			}<br /><br />			if (candidate == null || candidate.length() == 0) {<br />				candidate = DEFAULT_CLASS_KEY;<br />			}<br />		} catch (URIException e) {<br />			logger.log(Level.INFO,<br />					"unable to extract class key; using default", e);<br />			candidate = DEFAULT_CLASS_KEY;<br />		}<br /><br />		return candidate.replace(':', '#');<br />	}<br /><br />	public static long ELFHash(String str) {<br />		long hash = 0;<br />		long x = 0;<br />		for (int i = 0; i &lt; str.length(); i++) {<br />			hash = (hash &lt;&lt; 4) + str.charAt(i);<br />			if ((x = hash & 0xF0000000L) != 0) {<br />				hash ^= (x >> 24);<br />				hash &= ~x;<br />			}<br />		}<br />		return (hash & 0x7FFFFFFF);<br />	}<br /><br />}
          <br/>
          <span style="color:red;">
            <a href="http://zzxplayful.javaeye.com/blog/141272#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 16 Nov 2007 19:06:22 +0800</pubDate>
        <link>http://zzxplayful.javaeye.com/blog/141272</link>
        <guid>http://zzxplayful.javaeye.com/blog/141272</guid>
      </item>
      <item>
        <title>关于hibernate多表查询的问题</title>
        <author>zzxplayful</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zzxplayful.javaeye.com">zzxplayful</a>&nbsp;
          链接：<a href="http://zzxplayful.javaeye.com/blog/77168" style="color:red;">http://zzxplayful.javaeye.com/blog/77168</a>&nbsp;
          发表时间: 2007年05月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          我现在有两个表 一个是 userInfo(用户信息表)，一个是wapUserContentTb(用户图片对应表)<br />但是，我们现在数据库的配置文件都没有采用延迟加载<br /><br />能不能做一个新的po来吧userInfo和wapUserContentTb的数据库字段设成一个新的po来去数据呢？<br />下面是我的代码<br /><br />package com.datacomo.mobi5.app.tf.test;<br /><br />import java.util.List;<br /><br />import org.hibernate.Query;<br />import org.hibernate.Session;<br />import org.hibernate.Transaction;<br /><br />import com.datacomo.hibernate.HibernateSessionFactory;<br />import com.datacomo.hibernate.po.UserInfo;<br />import com.datacomo.hibernate.po.WapUserContentTb;<br /><br /><br />public class MutiTableTest{<br />	<br />	<br />	public static void main(String args[]) {<br />		<br />		Session session = HibernateSessionFactory.getSession();<br />		<br />		Transaction tx = session.beginTransaction();<br />		<br />		String hql = "from UserInfo u ,WapUserContentTb w where w.userId=u.userId and w.id=:Id";<br />		<br />		Query query = session.createQuery( hql );<br />		<br />		query.setString( "Id", "28E0A972908C6CCBE040A8C05201149D" );<br />		<br />		List list = query.list();<br />		<br />		tx.commit();<br />		<br />		session.close();<br />		<br />       <br />		System.out.println(list.get( 0 ));<br />		<br />		for(int i =0 ;i&lt;list.size();i++) {<br />			<br />			Object [] o = (Object[])list.get( i );<br />			<br />			for(int j = 0; j&lt;o.length;j++) {<br />				if(o[j] instanceof WapUserContentTb) {<br />					<br />					WapUserContentTb wap =(WapUserContentTb)o[j];<br />					<br />					System.out.println(wap.getChangeFileName());<br />				}<br />				<br />				else if(o[j] instanceof UserInfo) {<br />					<br />					UserInfo userInfo =(UserInfo)o[j];<br />					<br />					System.out.println(userInfo.getRealName());<br />				}<br />				<br />			}<br />			<br />		}<br />	}<br /><br />}
          <br/>
          <span style="color:red;">
            <a href="http://zzxplayful.javaeye.com/blog/77168#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 05 May 2007 14:53:53 +0800</pubDate>
        <link>http://zzxplayful.javaeye.com/blog/77168</link>
        <guid>http://zzxplayful.javaeye.com/blog/77168</guid>
      </item>
      <item>
        <title>hibernate的级联删除问题</title>
        <author>zzxplayful</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zzxplayful.javaeye.com">zzxplayful</a>&nbsp;
          链接：<a href="http://zzxplayful.javaeye.com/blog/40802" style="color:red;">http://zzxplayful.javaeye.com/blog/40802</a>&nbsp;
          发表时间: 2006年12月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          我有两个表一个是news表，一个是newsType表<br />   如下：<br />    CREATE  TABLE NewsType(<br />       TypeID  int PRIMARY KEY  NOT NULL identity(1,1) ,<br />       TypeName  VARCHAR(400) NOT NULL,<br />       DirName   VARCHAR(400) NOT NULL,<br />       TemplateName VARCHAR(400) NOT NULL<br />); <br /> CREATE  TABLE  News<br />(<br />       NewsID  int identity(1,1) PRIMARY KEY ,<br />       TypeID  int NOT NULL references NewsType(TypeID) on delete cascade,<br />       Title  VARCHAR(400) NOT NULL,<br />       HitCount int DEFAULT  0 NOT NULL,<br />       IssuseDate  datetime NOT NULL,<br />       DeployerID  int NOT  NULL,<br />       Origin  VARCHAR(400)  NOT  NULL,<br />      URL  VARCHAR(400) NOT NULL,<br />       KEYWORDS VARCHAR(400) ,<br />        Priority  int  DEFAULT  0 NOT NULL,<br />       Special  VARCHAR(400) ,<br />       Description  VARCHAR(400),<br />       Author  VARCHAR(400),<br />       Topic   VARCHAR(400)<br /><br />); <br />下面是:News.hbm.xml<br />&lt;?xml version="1.0"?><br />&lt;!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"<br />"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><br />&lt;!-- <br />    Mapping file autogenerated by MyEclipse - Hibernate Tools<br />--><br />&lt;hibernate-mapping><br />    &lt;class name="cn.model.mapping.News" table="News" schema="dbo" catalog="demo"><br />        &lt;id name="newsId" type="java.lang.Integer"><br />            &lt;column name="NewsID" /><br />            &lt;generator class="native" /><br />        &lt;/id><br />        &lt;!-- &lt;property name="typeId" column="TypeID" type="java.lang.Integer" not-null="true"/> --><br />        <br />        &lt;many-to-one name="newsType" class="cn.model.mapping.NewsType" fetch="select" insert="false" update="false"><br />            &lt;column name="TypeID" not-null="true" /><br />        &lt;/many-to-one><br />        &lt;property name="title" type="java.lang.String"><br />            &lt;column name="Title" length="400" not-null="true" /><br />        &lt;/property><br />        &lt;property name="hitCount" type="java.lang.Integer"><br />            &lt;column name="HitCount" not-null="true" /><br />        &lt;/property><br />        &lt;property name="issuseDate" type="java.util.Date"><br />            &lt;column name="IssuseDate" length="23" not-null="true" /><br />        &lt;/property><br />        &lt;property name="deployerId" type="java.lang.Integer"><br />            &lt;column name="DeployerID" not-null="true" /><br />        &lt;/property><br />        &lt;property name="origin" type="java.lang.String"><br />            &lt;column name="Origin" length="400" not-null="true" /><br />        &lt;/property><br />        &lt;property name="url" type="java.lang.String"><br />            &lt;column name="URL" length="400" not-null="true" /><br />        &lt;/property><br />        &lt;property name="keywords" type="java.lang.String"><br />            &lt;column name="KEYWORDS" length="400" /><br />        &lt;/property><br />        &lt;property name="priority" type="java.lang.Integer"><br />            &lt;column name="Priority" not-null="true" /><br />        &lt;/property><br />        &lt;property name="special" type="java.lang.String"><br />            &lt;column name="Special" length="400" /><br />        &lt;/property><br />        &lt;property name="description" type="java.lang.String"><br />            &lt;column name="Description" length="400" /><br />        &lt;/property><br />        &lt;property name="author" type="java.lang.String"><br />            &lt;column name="Author" length="400" /><br />        &lt;/property><br />        &lt;property name="topic" type="java.lang.String"><br />            &lt;column name="Topic" length="400" /><br />        &lt;/property><br />    &lt;/class><br />&lt;/hibernate-mapping><br /><br />NewsType.hbm.xml<br /><br />&lt;?xml version="1.0"?><br />&lt;!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"<br />"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><br />&lt;!-- <br />    Mapping file autogenerated by MyEclipse - Hibernate Tools<br />--><br />&lt;hibernate-mapping><br />    &lt;class name="cn.model.mapping.NewsType" table="NewsType" schema="dbo" catalog="demo"><br />        &lt;id name="typeId" type="java.lang.Integer"><br />            &lt;column name="TypeID" /><br />            &lt;generator class="native" /><br />        &lt;/id><br />        &lt;property name="typeName" type="java.lang.String"><br />            &lt;column name="TypeName" length="400" not-null="true" /><br />        &lt;/property><br />        &lt;property name="dirName" type="java.lang.String"><br />            &lt;column name="DirName" length="400" not-null="true" /><br />        &lt;/property><br />        &lt;property name="templateName" type="java.lang.String"><br />            &lt;column name="TemplateName" length="400" not-null="true" /><br />        &lt;/property><br />        &lt;set name="newses" inverse="true" cascade="all-delete-orphan"><br />            &lt;key><br />                &lt;column name="TypeID" not-null="true" /><br />            &lt;/key><br />            &lt;one-to-many class="cn.model.mapping.News" /><br />        &lt;/set><br />    &lt;/class><br />&lt;/hibernate-mapping><br /><br />当我测试的时候  我要向news表里单独插入数据的时候，就出现异常：<br />Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not insert: [cn.model.mapping.News]<br />	at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)<br />	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)<br />	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)<br />	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:1986)<br />	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2405)<br />	at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:37)<br />	at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)<br />	at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:269)<br />	at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:167)<br />	at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:101)<br />	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:186)<br />	at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)<br />	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:175)<br />	at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)<br />	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)<br />	at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:530)<br />	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:518)<br />	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:514)<br />	at cn.model.test.Test.main(Test.java:68)<br />Caused by: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]无法将 NULL 值插入列 'TypeID'，表 'demo.dbo.News'；该列不允许空值。INSERT 失败。<br /><br />但是,要是同是向两个表里插入数据时，就能成功。是怎么回事啊？<br /><br />Test.java<br /><br />package cn.model.test;<br /><br />import java.util.List;<br /><br />import org.hibernate.Query;<br />import org.hibernate.Session;<br />import org.hibernate.Transaction;<br /><br />import cn.model.HibernateSessionFactory;<br />import cn.model.mapping.NewsType;<br /><br />public class Test {<br />	<br />	<br />	<br />	public static void main(String args[]){<br />		<br />		Session session=HibernateSessionFactory.getSession();<br />		Transaction tx=session.beginTransaction();<br />		<br />		Query query=session.createQuery("from NewsType nt where nt.typeId=13");<br />		List list=query.list();<br />		NewsType newsType=(NewsType)list.get(0);<br />		session.delete(newsType);<br />		session.flush();<br />		session.close();<br />		<br />	}<br /><br />}
          <br/>
          <span style="color:red;">
            <a href="http://zzxplayful.javaeye.com/blog/40802#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 26 Dec 2006 12:03:42 +0800</pubDate>
        <link>http://zzxplayful.javaeye.com/blog/40802</link>
        <guid>http://zzxplayful.javaeye.com/blog/40802</guid>
      </item>
  </channel>
</rss>