﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-peacess</title><link>http://www.blogjava.net/peacess/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 30 Apr 2026 06:25:01 GMT</lastBuildDate><pubDate>Thu, 30 Apr 2026 06:25:01 GMT</pubDate><ttl>60</ttl><item><title>平台项目中的平衡</title><link>http://www.blogjava.net/peacess/archive/2013/09/04/403677.html</link><dc:creator>中东</dc:creator><author>中东</author><pubDate>Wed, 04 Sep 2013 13:25:00 GMT</pubDate><guid>http://www.blogjava.net/peacess/archive/2013/09/04/403677.html</guid><wfw:comment>http://www.blogjava.net/peacess/comments/403677.html</wfw:comment><comments>http://www.blogjava.net/peacess/archive/2013/09/04/403677.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/peacess/comments/commentRss/403677.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/peacess/services/trackbacks/403677.html</trackback:ping><description><![CDATA[项目做多了，总想着把一些共同的东西抽取出来以后使用。。。。。<br />突然有一天有一个机会在项目中把一些我认为有用的东西抽取出来放到那里，。。。。。<br />突然有一天发现原来自己抽取出来的东西从来就没有使用过。。。。。<br />每当遇到问题要解决时，总还是网上到处找，突然找到一个文章写的很好。。。。。。最后发现这个文章是自己写的<br />多了时间久了，就会忘记。<br /><br />项目开始：<br />在项目开始初期总对项目有一大堆的想法，要把这个做成公用，要把那个独立出来，。。。。是否是要做一个通用的平台出来，以后开发就省事了。。。。。。<br /><br />项目进行中：<br />客户的要求在变化。。。。<br />团队在变化。。。。<br />代码量也上来了。。。。<br />这时项目的设计变化在不断的进行着，经常同样一件事情会反复做多次。。。。<br />客户的压力、团队人员的情绪等也产生了，这时项目的时间也不多了。。。。。<br /><br />项目项目结束中：<br />客户在一天天的要求进度。。。。。<br />团队人员已开始做下一个项目的准备，在想下一个项目一定做好。。。。。<br />客户团队都处在痛苦中。。。。。<br />项目开始进入大量的加班中。。。。。<br /><br />项目结束了。<br /><br />总结： 要在项目开始的时候设一个宏大的目标，做那多的抽取吗？如果不做抽取，项目会不会做的质量高一点，加班加的少一点。<br /><br /><br />。。。。。不管理怎么样，第一要解决问题，不然其它什么都等于零。<br /><img src ="http://www.blogjava.net/peacess/aggbug/403677.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/peacess/" target="_blank">中东</a> 2013-09-04 21:25 <a href="http://www.blogjava.net/peacess/archive/2013/09/04/403677.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ant中的文件复制问题</title><link>http://www.blogjava.net/peacess/archive/2007/08/11/136034.html</link><dc:creator>中东</dc:creator><author>中东</author><pubDate>Sat, 11 Aug 2007 08:02:00 GMT</pubDate><guid>http://www.blogjava.net/peacess/archive/2007/08/11/136034.html</guid><wfw:comment>http://www.blogjava.net/peacess/comments/136034.html</wfw:comment><comments>http://www.blogjava.net/peacess/archive/2007/08/11/136034.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/peacess/comments/commentRss/136034.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/peacess/services/trackbacks/136034.html</trackback:ping><description><![CDATA[ant的文件复制常会出问题：<br>&nbsp;&nbsp;&nbsp; ant没有任何提示，也没有把文件复制到指定的地方（源文件已经改变）。这样经常会使用程序编译或运行产生奇怪的错误，因为它使用了旧的没有更新的文件<br>解决方法<br>&nbsp;&nbsp;&nbsp; <span style="color: red;">在复制文件之前，先把文件删除（如果文件不能被删除，ant会有提示）</span><br>&nbsp;&nbsp;&nbsp; <span style="color: red;">在jar之前也要做相同的事情</span><br><br><img src ="http://www.blogjava.net/peacess/aggbug/136034.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/peacess/" target="_blank">中东</a> 2007-08-11 16:02 <a href="http://www.blogjava.net/peacess/archive/2007/08/11/136034.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>gwt项目开发的经验集----会一直增加</title><link>http://www.blogjava.net/peacess/archive/2007/08/06/84950.html</link><dc:creator>中东</dc:creator><author>中东</author><pubDate>Mon, 06 Aug 2007 14:41:00 GMT</pubDate><guid>http://www.blogjava.net/peacess/archive/2007/08/06/84950.html</guid><wfw:comment>http://www.blogjava.net/peacess/comments/84950.html</wfw:comment><comments>http://www.blogjava.net/peacess/archive/2007/08/06/84950.html#Feedback</comments><slash:comments>29</slash:comments><wfw:commentRss>http://www.blogjava.net/peacess/comments/commentRss/84950.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/peacess/services/trackbacks/84950.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 13，用gwt在web中实现上下文菜单（右键菜单、弹出菜单） 2007年8月3日<br>12，gwt中使用float样式实现 完成 2007年7月28日<br>11，11，文件下载（downloat，通过表单方式） 完成 2007年8月6日<br>10，阻止事件传到父对象 2007年7月31日<br>9，文件上传客户端（隐藏表单） 2007年7月29日<br>8，不换行：表格字符、多种widget的组合 计划中<br>7，css的（边框）margin、border、padding、width、height与dom对象的属clientWidth、offsetWidth、offsetHeight等的关系及gwt的获取与设置>  完成 2007年5月9日<br>6，学习资源              完成 2006年12月21日<br>5，给gwt的ui组件增加事件 完成 2006年12月17日<br>4，按钮的鼠标进出样式    完成 2006年12月14日<br>3，元素宽度计算          完成<br>2，对话框居中            完成<br><&nbsp;&nbsp;<a href='http://www.blogjava.net/peacess/archive/2007/08/06/84950.html'>阅读全文</a><img src ="http://www.blogjava.net/peacess/aggbug/84950.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/peacess/" target="_blank">中东</a> 2007-08-06 22:41 <a href="http://www.blogjava.net/peacess/archive/2007/08/06/84950.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>gwt在eclipse、tomcat中单步调试客户与服务的完整实例---（升级为gwt1.4 进行中）</title><link>http://www.blogjava.net/peacess/archive/2007/07/26/55795.html</link><dc:creator>中东</dc:creator><author>中东</author><pubDate>Thu, 26 Jul 2007 12:44:00 GMT</pubDate><guid>http://www.blogjava.net/peacess/archive/2007/07/26/55795.html</guid><wfw:comment>http://www.blogjava.net/peacess/comments/55795.html</wfw:comment><comments>http://www.blogjava.net/peacess/archive/2007/07/26/55795.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/peacess/comments/commentRss/55795.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/peacess/services/trackbacks/55795.html</trackback:ping><description><![CDATA[使用tomcat进行浏览，而不使用gwt自带的，这样可以取得tomcat的上下文信息，并可以单步客户端<br><br>完整的源代码（为了方便编译后的文件也保留了）：<a href="http://www.blogjava.net/Files/peacess/Wylpeace-tomcat.rar">Wylpeace-tomcat</a><br><br>环境的建立<br>1，下载eclipse3.3 :<a href="http://download.eclipse.org/eclipse/downloads/index.php">http://download.eclipse.org/eclipse/downloads/index.php</a><br>2，下载tomcat6.0 : <a href="http://tomcat.apache.org/download-60.cgi">http://tomcat.apache.org/download-60.cgi</a><br>3，下载Tomcat Plugin：<a href="http://www.sysdeo.com/eclipse/tomcatplugin">http://www.sysdeo.com/eclipse/tomcatplugin</a><a href="http://sourceforge.net/projects/googlipse"></a><br>4，安装（怎么安装就自己去google吧）<br><br>正式开工<br>建一个用eclipse开发的gwt项目（如果不想建立，可以下载源代码）<br>&nbsp;&nbsp;&nbsp; gwt的命令行方式:<a href="http://code.google.com/webtoolkit/gettingstarted.html">http://code.google.com/webtoolkit/gettingstarted.html</a><br>&nbsp;&nbsp;&nbsp; <br>在eclipse中配置tomcat的运行环境<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; 首先把插件配置好<br>&nbsp;&nbsp;&nbsp; window--》preference--》tomcat：配置&#8220;tomcat home&#8221;与&#8220;tomcat vesion&#8221; --》advanced ：配置&#8220;tomcat base&#8221;（与&#8220;tomcat home&#8221;相同） --》jvm setting ： 选择&#8220;jre&#8221;，注意一定是jdk下的jre，不然不能调试服务端代码<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; 然后呢（配置的内容比较多，没有办法）<br>&nbsp;&nbsp;&nbsp; 1，在项目下建，如下目录wylpeace.samples.select.WylpeaceSelect/WEB-INF/classes、wylpeace.samples.select.WylpeaceSelect/WEB-INF/lib<br>&nbsp;&nbsp;&nbsp; 2，在&#8220;WEB-INF&#8221;下加入文件&#8220;web.xml&#8221;内容如源代码<br>&nbsp;&nbsp;&nbsp; 3，把文件gwt-user.jar、gwt-dev-windows.jar、gwt-ll.dll、swt-win32-3235.dll、ojdbc14.jar放入lib目录。<br>&nbsp;&nbsp;&nbsp; 4，增加库引用&#8220;gwt-user.jar、gwt-dev-windows.jar、ojdbc14.jar
&#8221;<br>&nbsp;&nbsp;&nbsp; 5，修改class文件的输出路径，如下图<br><img src="http://www.blogjava.net/images/blogjava_net/peacess/webgwt/classout.GIF" border="0"><br><br>配置gwt的hosted<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; 1，右键项目&#8220;Wylpeace&#8221;--》debug as--》debug如下图所示<br><img src="http://www.blogjava.net/images/blogjava_net/peacess/webgwt/debugtomcat.GIF" border="0"><br><br>&nbsp;&nbsp;&nbsp; 注意图中的选中部分&#8220;<img src="file:///C:/DOCUME%7E1/wpeace/LOCALS%7E1/Temp/moz-screenshot.jpg" alt="">-noserver -port 8080&#8221;(用这种方式可以改变gwt的默认端口8888)，<br>&nbsp;&nbsp;&nbsp; 还是在这个图中&#8220;classpath&#8221;标签进行修改,参见：<a href="http://www.blogjava.net/peacess/archive/2007/07/24/49447.html">http://www.blogjava.net/peacess/archive/2007/07/24/49447.html</a><br><br>配置tomcat插件<br><img  src="http://www.blogjava.net/images/blogjava_net/peacess/webgwt/debugtomcat-plugins.GIF" border="0"><br><br>所有配置都完成了，我们可以开始单步调试了<br>首先重起tomcat（在eclipse中），在调试运行&#8220;wylpeace&#8221;<br>这时会提示找不到网页，修改url为：http://localhost:8080/wylpeace.samples.select.WylpeaceSelect/WylpeaceSelect.html<br>好了整个过程结束，如果有什么问题请联系<br>&nbsp;&nbsp;&nbsp; mail：peacess@163.com<br>&nbsp;&nbsp;&nbsp; qq：64407724<br>你也可以参考：<a href="http://jroller.com/page/masini?entry=deploy_and_debug_google_web">http://jroller.com/page/masini?entry=deploy_and_debug_google_web</a><br>你也可以参考：<a href="http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/338c4b765d7dfc39/c9382d0e65266248?q=tomcat&amp;rnum=3#c9382d0e65266248">http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/338c4b765d7dfc39/c9382d0e65266248?q=tomcat&amp;rnum=3#c9382d0e65266248</a><br>    <img src ="http://www.blogjava.net/peacess/aggbug/55795.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/peacess/" target="_blank">中东</a> 2007-07-26 20:44 <a href="http://www.blogjava.net/peacess/archive/2007/07/26/55795.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>gwt 1.4学习--数据库记录显示实现（二.1）(把源来的内容升级为gwt1.4)</title><link>http://www.blogjava.net/peacess/archive/2007/07/24/49447.html</link><dc:creator>中东</dc:creator><author>中东</author><pubDate>Tue, 24 Jul 2007 14:42:00 GMT</pubDate><guid>http://www.blogjava.net/peacess/archive/2007/07/24/49447.html</guid><wfw:comment>http://www.blogjava.net/peacess/comments/49447.html</wfw:comment><comments>http://www.blogjava.net/peacess/archive/2007/07/24/49447.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/peacess/comments/commentRss/49447.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/peacess/services/trackbacks/49447.html</trackback:ping><description><![CDATA[		<strong>实现的功能<br></strong>&nbsp;&nbsp; 在gwt开发中实现，与数据库（oracle）的连接(jdbc)，并显示数据记录集，说白了就是在ajax的gwt架构下与数据库交互。<br><strong>相关工具<br></strong><a target="" class="" title="" href="http://code.google.com/webtoolkit/">gwt1.4</a>，eclipse3.3<strong><br></strong><strong>首先说明一下要原理</strong><br>分为两部分：客户端部分与服务端部分<br>如果对gwt的远程调用不怎么清楚，请参见：<a href="http://code.google.com/webtoolkit/documentation/com.google.gwt.doc.DeveloperGuide.RemoteProcedureCalls.html">http://code.google.com/webtoolkit/documentation/com.google.gwt.doc.DeveloperGuide.RemoteProcedureCalls.html</a><br><br><strong>客户端部分</strong><br>&nbsp;&nbsp; 由于客户端只支持jdk1.4的包util与lang（没有jdbc），所以只能自己写一个类存放记录集，如下<br>public class PeaceResultSet {<br>&nbsp;&nbsp;&nbsp; private String[] cols;<br>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp; &nbsp;* @gwt.typeArgs &lt;java.lang.String[]&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;*/<br>&nbsp;&nbsp;&nbsp; private List rows;<br>&nbsp;&nbsp;&nbsp; public String[] getCols() {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return cols;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; public void setCols(String[] cols) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this.cols = cols;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; public List getRows() {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return rows;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; public void setRows(List rows) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this.rows = rows;<br>&nbsp;&nbsp;&nbsp; }<br>}<br>&nbsp;&nbsp;&nbsp; 对此类作一个简单的说明。cols是存放列名的，rows是存放记录行的，请注意在它前面的那一个注释（/**<br>
&nbsp;&nbsp;&nbsp; &nbsp;* @gwt.typeArgs &lt;java.lang.String[]&gt;<br>
&nbsp;&nbsp;&nbsp; &nbsp;*/），一定不能少的，因为，最终这个java代码会被转换成javascript，这里告诉转换的类型的<br>有了记录集，我们就可以用FlexTable来把我们的记录集显示出来了,如下<br>public class PeaceTable extends Composite{<br><br>&nbsp;&nbsp;&nbsp; private FlexTable table = new FlexTable();<br>&nbsp;&nbsp;&nbsp; public FlexTable getTable() {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return table;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; public PeaceTable() {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this.initWidget(table);<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; public void showResultSet(PeaceResultSet re)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this.table.clear();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(re != null &amp;&amp; re.getRows()!= null &amp;&amp; re.getRows().size()&gt;0)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; String[] cols = re.getCols();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; List rows = re.getRows();<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for(int j = cols.length-1; j &gt;= 0; j--)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; table.setText(0,j,cols[j]);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for(int i = 0; i &lt; rows.size(); i++)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; cols = (String[])rows.get(i);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for(int j = cols.length-1; j &gt;= 0; j--)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; table.setText(i+1,j,cols[j]);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; table.setText(0,0,"no data");<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; public void callServer(String sql) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; PeaceSelectResultSetAsync.Util.getInstance().select(sql, new AsyncCallback() {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void onFailure(Throwable caught) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void onSuccess(Object result) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; showResultSet((PeaceResultSet) result);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });<br>&nbsp;&nbsp;&nbsp; }<br><strong>服务端部分</strong><br>这一部分是完全的java，可以用java可以使用的全部库（当然自己写的也可以）<br>我这里用的是jdbc来连接数据库（只是最简单的，因为这里不是说明数据怎么操作的），代码如下<br>public class PeaceSelectResultSetImpl extends RemoteServiceServlet implements<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; PeaceSelectResultSet {<br><br>&nbsp;&nbsp;&nbsp; private static final long serialVersionUID = 1L;<br><br>&nbsp;&nbsp;&nbsp; public PeaceResultSet select(String sql) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Connection conn = null;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Statement stmt = null;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ResultSet se = null;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; try {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; String url = "jdbc:oracle:thin:@192.168.1.11:1521:XXXX"; // orclΪ��ݿ��SID<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; String user = "uuser";<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; String password = "pwd";<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; conn = DriverManager.getConnection(url, user, password);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; stmt = conn.createStatement();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; se = stmt.executeQuery(sql);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ResultSetMetaData rsmd = se.getMetaData();<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; String[] cols = new String[rsmd.getColumnCount()];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; List rows = new ArrayList();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for (int i = cols.length; i &gt; 0; i--) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; cols[i - 1] = rsmd.getColumnName(i);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; while (se.next()) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; String[] row = new String[cols.length];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; rows.add(row);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for (int i = cols.length - 1; i &gt;= 0; i--) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; row[i] = se.getString(cols[i]);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; PeaceResultSet kfse = new PeaceResultSet();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; kfse.setCols(cols);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; kfse.setRows(rows);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return kfse;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } catch (Exception e) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; e.printStackTrace();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } finally {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (se != null)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; try {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; se.close();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } catch (SQLException e1) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; e1.printStackTrace();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (stmt != null)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; try {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; stmt.close();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } catch (SQLException e1) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; e1.printStackTrace();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (conn != null)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; try {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; conn.close();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } catch (SQLException e) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; e.printStackTrace();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return null;<br>&nbsp;&nbsp;&nbsp; }<br>}<br>在下一部分中，我将说明一些注意事项，以及给出完整的源代码！！<br>  <img src ="http://www.blogjava.net/peacess/aggbug/49447.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/peacess/" target="_blank">中东</a> 2007-07-24 22:42 <a href="http://www.blogjava.net/peacess/archive/2007/07/24/49447.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>gwt 1.4 学习--数据库记录显示实现（二.2）(把源来的内容升级为gwt1.4)</title><link>http://www.blogjava.net/peacess/archive/2007/07/24/49600.html</link><dc:creator>中东</dc:creator><author>中东</author><pubDate>Tue, 24 Jul 2007 14:42:00 GMT</pubDate><guid>http://www.blogjava.net/peacess/archive/2007/07/24/49600.html</guid><wfw:comment>http://www.blogjava.net/peacess/comments/49600.html</wfw:comment><comments>http://www.blogjava.net/peacess/archive/2007/07/24/49600.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/peacess/comments/commentRss/49600.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/peacess/services/trackbacks/49600.html</trackback:ping><description><![CDATA[接着上一次的内容<br>注意事项：<br>&nbsp;&nbsp;&nbsp; 在客户端部分，只能使用jdk的一部分<br>&nbsp;&nbsp;&nbsp; 把服务端的程序写完后，记得在文件&#8220;WylpeaceSelect.gwt.xml&#8221;中进行配置，如下代码<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &lt;module&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  。。。。。。。<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp; &lt;servlet path='/peaceselect' class='wylpeace.samples.select.service.PeaceSelectResultSetImpl'/&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  。。。。。。。。<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &lt;/module&gt;<br>&nbsp;&nbsp;&nbsp; 在eclipse中调试时，会提示找不数据库相的类，要记住做如下操作<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  。。。&#8220;debug&#8221;----》选中&#8220;WylpeaceSelect&#8221;----》选中&#8220;classpath&#8221;，单击右下的&#8220;restore default entries&#8221;，再单击&#8220;addvaced&#8221;增加源代码目录<br>如图：<img src="file:///C:/DOCUME%7E1/wpeace/LOCALS%7E1/Temp/moz-screenshot.jpg" alt=""><br><img src="file:///C:/DOCUME%7E1/wpeace/LOCALS%7E1/Temp/moz-screenshot-1.jpg" alt=""><img src="file:///C:/DOCUME~1/WPEACE~1.LEG/LOCALS~1/Temp/moz-screenshot.jpg" alt=""><img alt="" src="http://www.blogjava.net/images/blogjava_net/peacess/webgwt/wylpeace-debug.GIF" height="465" width="657"><br><br>完整个代码（eclipse）：<a href="http://www.blogjava.net/Files/peacess/Wylpeace.rar">WylpeaceSelect</a><br>注意：<br>&nbsp;&nbsp;&nbsp;&nbsp; 下载代码后修改WylpeaceSelect.launch中的gwt包的路径<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 注意加入你的数据库包（oracle的jdbc）<br>  <img src ="http://www.blogjava.net/peacess/aggbug/49600.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/peacess/" target="_blank">中东</a> 2007-07-24 22:42 <a href="http://www.blogjava.net/peacess/archive/2007/07/24/49600.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate 多对多关系在mysql、oracle中的不同</title><link>http://www.blogjava.net/peacess/archive/2007/06/11/123485.html</link><dc:creator>中东</dc:creator><author>中东</author><pubDate>Mon, 11 Jun 2007 15:19:00 GMT</pubDate><guid>http://www.blogjava.net/peacess/archive/2007/06/11/123485.html</guid><wfw:comment>http://www.blogjava.net/peacess/comments/123485.html</wfw:comment><comments>http://www.blogjava.net/peacess/archive/2007/06/11/123485.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/peacess/comments/commentRss/123485.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/peacess/services/trackbacks/123485.html</trackback:ping><description><![CDATA[用户（User）与角色（Role）多对多关系（UserRole）<br>下面是表的代码（配置为annotation）<br>User：<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><img id="Code_Closed_Image_225847" onclick="this.style.display='none'; code_closed_text_225847.style.display=" none="" ;="" code_open_image_225847.style.display="'inline';" code_open_text_225847.style.display="'inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top" height="16" width="11"><img id="Code_Open_Image_225847" style="display: none;" onclick="this.style.display='none'; code_open_text_225847.style.display=" none="" ;="" code_closed_image_225847.style.display="'inline';" code_closed_text_225847.style.display="'inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" height="16" width="11"><br><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->package&nbsp;sub;<br>import&nbsp;java.io.Serializable;<br>import&nbsp;java.util.Set;<br>import&nbsp;javax.persistence.Entity;<br>import&nbsp;javax.persistence.GeneratedValue;<br>import&nbsp;javax.persistence.Id;<br>import&nbsp;javax.persistence.JoinColumn;<br>import&nbsp;javax.persistence.JoinTable;<br>import&nbsp;javax.persistence.ManyToMany;<br>@Entity<br>public&nbsp;class&nbsp;User&nbsp;implements&nbsp;Serializable<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;final&nbsp;long&nbsp;serialVersionUID&nbsp;=&nbsp;1L;<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Long&nbsp;id;<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Set&lt;Role&gt;&nbsp;roles;<br>&nbsp;&nbsp;&nbsp;&nbsp;@Id<br>&nbsp;&nbsp;&nbsp;&nbsp;@GeneratedValue<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;Long&nbsp;getId()<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;id;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;setId(Long&nbsp;id)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.id&nbsp;=&nbsp;id;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;@ManyToMany<br>&nbsp;&nbsp;&nbsp;&nbsp;@JoinTable(name="UserRole",joinColumns={@JoinColumn(name="user_ID")},inverseJoinColumns={@JoinColumn(name="role_ID")})<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;Set&lt;Role&gt;&nbsp;getRoles()<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;roles;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;setRoles(Set&lt;Role&gt;&nbsp;roles)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.roles&nbsp;=&nbsp;roles;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}</div>
<br>
Role：<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><img id="Code_Closed_Image_225754" onclick="this.style.display='none'; code_closed_text_225754.style.display=" none="" ;="" code_open_image_225754.style.display="'inline';" code_open_text_225754.style.display="'inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top" height="16" width="11"><img id="Code_Open_Image_225754" style="display: none;" onclick="this.style.display='none'; code_open_text_225754.style.display=" none="" ;="" code_closed_image_225754.style.display="'inline';" code_closed_text_225754.style.display="'inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" height="16" width="11"><br><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->package&nbsp;sub;<br>import&nbsp;java.io.Serializable;<br>import&nbsp;java.util.Set;<br>import&nbsp;javax.persistence.Entity;<br>import&nbsp;javax.persistence.GeneratedValue;<br>import&nbsp;javax.persistence.Id;<br>import&nbsp;javax.persistence.JoinColumn;<br>import&nbsp;javax.persistence.JoinTable;<br>import&nbsp;javax.persistence.ManyToMany;<br>@Entity<br>public&nbsp;class&nbsp;Role&nbsp;implements&nbsp;Serializable<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;final&nbsp;long&nbsp;serialVersionUID&nbsp;=&nbsp;1L;<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Long&nbsp;id;<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Set&lt;User&gt;&nbsp;users;<br>&nbsp;&nbsp;&nbsp;&nbsp;@Id<br>&nbsp;&nbsp;&nbsp;&nbsp;@GeneratedValue<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;Long&nbsp;getId()<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;id;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;setId(Long&nbsp;id)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.id&nbsp;=&nbsp;id;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp; @ManyToMany<br>&nbsp;&nbsp;&nbsp;&nbsp;@JoinTable(name="UserRole",joinColumns={@JoinColumn(name="role_ID")},inverseJoinColumns={@JoinColumn(name="user_ID")})<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;Set&lt;User&gt;&nbsp;getUsers()<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;users;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;setUsers(Set&lt;User&gt;&nbsp;users)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.users&nbsp;=&nbsp;users;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br></div>
<br>UserRoleId：<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><img id="Code_Closed_Image_225926" onclick="this.style.display='none'; code_closed_text_225926.style.display=" none="" ;="" code_open_image_225926.style.display="'inline';" code_open_text_225926.style.display="'inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top" height="16" width="11"><img id="Code_Open_Image_225926" style="display: none;" onclick="this.style.display='none'; code_open_text_225926.style.display=" none="" ;="" code_closed_image_225926.style.display="'inline';" code_closed_text_225926.style.display="'inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" height="16" width="11"><br><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->package&nbsp;sub;<br>import&nbsp;java.io.Serializable;<br>import&nbsp;javax.persistence.Embeddable;<br>@Embeddable<br>public&nbsp;class&nbsp;UserRoleId&nbsp;implements&nbsp;Serializable<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;final&nbsp;long&nbsp;serialVersionUID&nbsp;=&nbsp;1L;<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Long&nbsp;userId;<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Long&nbsp;roleId;<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;UserRoleId(Long&nbsp;userId,&nbsp;Long&nbsp;roleId)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.userId&nbsp;=&nbsp;userId;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.roleId&nbsp;=&nbsp;roleId;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;UserRoleId()<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this(null,null);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;@Override<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;boolean&nbsp;equals(Object&nbsp;obj)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(obj&nbsp;==&nbsp;this)return&nbsp;true;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(obj&nbsp;instanceof&nbsp;UserRoleId)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;final&nbsp;UserRoleId&nbsp;other&nbsp;=&nbsp;(UserRoleId)&nbsp;obj;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Long&nbsp;userT&nbsp;=&nbsp;getUserId();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Long&nbsp;userOther&nbsp;=&nbsp;other.getUserId();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Long&nbsp;roleT&nbsp;=&nbsp;getRoleId();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Long&nbsp;roleOther&nbsp;=&nbsp;other.getRoleId();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;((userT&nbsp;==&nbsp;userOther)&nbsp;||&nbsp;(userT&nbsp;!=&nbsp;null&nbsp;&amp;&amp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;userOther&nbsp;!=&nbsp;null&nbsp;&amp;&amp;&nbsp;userT.equals(userOther)))&nbsp;&amp;&amp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((roleT&nbsp;==&nbsp;roleOther)&nbsp;||&nbsp;(roleT&nbsp;!=&nbsp;null&nbsp;&amp;&amp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;roleOther&nbsp;!=&nbsp;null&nbsp;&amp;&amp;&nbsp;roleT.equals(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;roleOther)));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;@Override<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;int&nbsp;hashCode()<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;re&nbsp;=&nbsp;17;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;re&nbsp;+=&nbsp;(userId&nbsp;==&nbsp;null?0:userId.hashCode());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;re&nbsp;+=&nbsp;(roleId&nbsp;==&nbsp;null?0:roleId.hashCode());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;37*re;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;Long&nbsp;getUserId()<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;userId;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;setUserId(Long&nbsp;userId)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.userId&nbsp;=&nbsp;userId;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;Long&nbsp;getRoleId()<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;roleId;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;setRoleId(Long&nbsp;roleId)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.roleId&nbsp;=&nbsp;roleId;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br></div>
<br>UserRole：<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><img id="Code_Closed_Image_230035" onclick="this.style.display='none'; code_closed_text_230035.style.display=" none="" ;="" code_open_image_230035.style.display="'inline';" code_open_text_230035.style.display="'inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top" height="16" width="11"><img id="Code_Open_Image_230035" style="display: none;" onclick="this.style.display='none'; code_open_text_230035.style.display=" none="" ;="" code_closed_image_230035.style.display="'inline';" code_closed_text_230035.style.display="'inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" height="16" width="11"><br><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->package&nbsp;sub;<br>import&nbsp;java.io.Serializable;<br>import&nbsp;javax.persistence.AttributeOverride;<br>import&nbsp;javax.persistence.AttributeOverrides;<br>import&nbsp;javax.persistence.Column;<br>import&nbsp;javax.persistence.EmbeddedId;<br>import&nbsp;javax.persistence.Entity;<br>import&nbsp;javax.persistence.FetchType;<br>import&nbsp;javax.persistence.JoinColumn;<br>import&nbsp;javax.persistence.ManyToOne;<br>@Entity<br>public&nbsp;class&nbsp;UserRole&nbsp;implements&nbsp;Serializable<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;/**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;final&nbsp;long&nbsp;serialVersionUID&nbsp;=&nbsp;1L;<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;UserRoleId&nbsp;id;<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Role&nbsp;role;<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;User&nbsp;user;<br>&nbsp;&nbsp;&nbsp;&nbsp;@EmbeddedId<br>&nbsp;&nbsp;&nbsp;&nbsp;@AttributeOverrides(&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@AttributeOverride(name&nbsp;=&nbsp;"userId",&nbsp;column&nbsp;=&nbsp;@Column(name&nbsp;=&nbsp;"user_ID",&nbsp;unique&nbsp;=&nbsp;false,&nbsp;nullable&nbsp;=&nbsp;false,&nbsp;insertable&nbsp;=&nbsp;true,&nbsp;updatable&nbsp;=&nbsp;true)),<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@AttributeOverride(name&nbsp;=&nbsp;"roleId",&nbsp;column&nbsp;=&nbsp;@Column(name&nbsp;=&nbsp;"role_ID",&nbsp;unique&nbsp;=&nbsp;false,&nbsp;nullable&nbsp;=&nbsp;false,&nbsp;insertable&nbsp;=&nbsp;true,&nbsp;updatable&nbsp;=&nbsp;true))&nbsp;})<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;UserRoleId&nbsp;getId()<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;id;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;@ManyToOne(cascade&nbsp;=&nbsp;{})<br>&nbsp;&nbsp;&nbsp;&nbsp;@JoinColumn(name&nbsp;=&nbsp;"role_ID",&nbsp;unique&nbsp;=&nbsp;false,&nbsp;nullable&nbsp;=&nbsp;false,&nbsp;insertable&nbsp;=&nbsp;false,&nbsp;updatable&nbsp;=&nbsp;false)<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;Role&nbsp;getRole()<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;role;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;@ManyToOne(cascade&nbsp;=&nbsp;{},&nbsp;fetch&nbsp;=&nbsp;FetchType.EAGER)<br>&nbsp;&nbsp;&nbsp;&nbsp;@JoinColumn(name&nbsp;=&nbsp;"user_ID",&nbsp;unique&nbsp;=&nbsp;false,&nbsp;nullable&nbsp;=&nbsp;false,&nbsp;insertable&nbsp;=&nbsp;false,&nbsp;updatable&nbsp;=&nbsp;false)<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;User&nbsp;getUser()<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;user;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;setId(UserRoleId&nbsp;id)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.id&nbsp;=&nbsp;id;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;setRole(Role&nbsp;role)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.role&nbsp;=&nbsp;role;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;setUser(User&nbsp;user)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.user&nbsp;=&nbsp;user;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br></div>
<br>&nbsp;&nbsp;&nbsp; 在mysql数据库中，保存UserRole时出错。而完全相同的代码在oracle数据中正确。<br>操作如下：<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User&nbsp;user;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Role&nbsp;role;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//经过多步操作以后，user与role都保存到数据库，与之相关联的session已关闭<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session&nbsp;s&nbsp;=&nbsp;null;//取得s的代码没有写出来<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.beginTransaction();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UserRole&nbsp;userRole&nbsp;=&nbsp;new&nbsp;UserRole();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;userRole.setId(new&nbsp;UserRoleId(user.getId(),role.getId()));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;userRole.setUser(user);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;userRole.setRole(role);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.persist(userRole);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.getTransaction().commit();<br>//一提交就出错，提示user没有保存，但是奇怪的是为什么在oracle中完全正确。<br>//最后在mysql中作如下的修改可以正确保存<br>//把&nbsp;userRole.setUser(user)与userRole.setRole(role)删除<br></div>
有那位知道是什么问题，请告之
<br>   <img src ="http://www.blogjava.net/peacess/aggbug/123485.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/peacess/" target="_blank">中东</a> 2007-06-11 23:19 <a href="http://www.blogjava.net/peacess/archive/2007/06/11/123485.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>失去了什么----提高项目进度</title><link>http://www.blogjava.net/peacess/archive/2006/11/20/82387.html</link><dc:creator>中东</dc:creator><author>中东</author><pubDate>Mon, 20 Nov 2006 14:03:00 GMT</pubDate><guid>http://www.blogjava.net/peacess/archive/2006/11/20/82387.html</guid><wfw:comment>http://www.blogjava.net/peacess/comments/82387.html</wfw:comment><comments>http://www.blogjava.net/peacess/archive/2006/11/20/82387.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/peacess/comments/commentRss/82387.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/peacess/services/trackbacks/82387.html</trackback:ping><description><![CDATA[
		<br />当项目进度被一再加快时，到最后项目还是做出来了，到底从中失去了什么？？<br /><br />做开发的失去了什么？做管理的失去了什么？做客户的失去了什么？产品呢，它又失去什么？<br /><br />可能都失去了！因为后继的工作量比开发的还要大的多，如果项目经理不下大力气加班的话，整个项目可能<br /><br />都没有办法维护。<br /><br />可能都没有失去，因为没有完全相同的两个项目来进行比较，谁也没有办法量化，到底失去了什么？<br /><br /><br /><br />到底失去了什么？到底失去了什么？？<br /><img src ="http://www.blogjava.net/peacess/aggbug/82387.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/peacess/" target="_blank">中东</a> 2006-11-20 22:03 <a href="http://www.blogjava.net/peacess/archive/2006/11/20/82387.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>清空数据库数据（表）的一个解决方案</title><link>http://www.blogjava.net/peacess/archive/2006/11/09/80208.html</link><dc:creator>中东</dc:creator><author>中东</author><pubDate>Thu, 09 Nov 2006 09:18:00 GMT</pubDate><guid>http://www.blogjava.net/peacess/archive/2006/11/09/80208.html</guid><wfw:comment>http://www.blogjava.net/peacess/comments/80208.html</wfw:comment><comments>http://www.blogjava.net/peacess/archive/2006/11/09/80208.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.blogjava.net/peacess/comments/commentRss/80208.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/peacess/services/trackbacks/80208.html</trackback:ping><description><![CDATA[
		<br />     在做数据库开发中，经常都要清空（delete）数据或删除（drop）所有的表。然而，外键的存在，给这个工作带来了很大的不便。这里用jdbc写一个通用的类，产生出清空或删除表的顺序。<br />以下代码在mysql与oracle下面运行正常<br /><br />(在同行的建议下作了一些改进，又增加了一些功能，见类注释)<br />代码：<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">package createData.tryDemo;<br /><br />import java.sql.Connection;<br />import java.sql.DatabaseMetaData;<br />import java.sql.ResultSet;<br />import java.sql.SQLException;<br />import java.sql.Statement;<br />import java.util.ArrayList;<br />import java.util.Iterator;<br />import java.util.List;<br /><br />/**<br /> * 外键工具<br /> * 1，返回清空（删除）数据库表的先后顺序<br /> * 2，找出数据库中的外键环<br /> * 3，找出数据库中的对同一个表的重复外键关联<br /> * <br /> * 注：外键环（不知道在数据库中，对此情况有没有别的命名）<br /> *  情况1，外键表是自己 （自外键环、小外键环、单外键环）<br /> *  情况2，aTable的外键表是bTable，而bTable的外键表又是aTable（双外键环）<br /> *  情况3，就是多个表之间形成的外键环（多外键环）<br /> * @author wpeace<br /> *<br /> */<br />public class ExportedKeysTools<br />{<br />    public static void main(String[] args)<br />    {<br />        //得到一个数据库的连接，这里就不细说了<br />        Connection connection = null;<br />        <br />        List&lt;String&gt; tables = ExportedKeysTools.getDeleteOrder(connection);<br />        <br />        System.out.print(tables);<br />        //清空数据,以oracle为例<br />        StringBuilder scrip = new StringBuilder();<br />        for(String it : tables)<br />        {<br />            scrip.append(String.format("delete from %s;\r\n", it));<br />        }<br />        System.out.print(scrip);<br />        //删除所有表,以oracle为例<br />        <br />        for(String it : tables)<br />        {<br />            scrip.append(String.format("drop table %s;\r\n", it));<br />        }<br />        System.out.print(scrip);<br />        <br />        //提示关闭连接！！！<br /><br />    }<br />    public static List&lt;String&gt; getDeleteOrder(Connection connection)<br />    {<br />        String userName = null;<br />        try<br />        {<br />            userName = connection.getMetaData().getUserName();<br />        }<br />        catch (SQLException e)<br />        {<br />            e.printStackTrace();<br />        }<br />        return ExportedKeysTools.getDeleteOrder(connection, userName);<br />    }<br />    /**<br />     * 返回清空（删除）数据库表的先后顺序<br />     * @param connection jdbc连接<br />     * @param userName 如果为null的话，在oracle数据库下面是所有的用户的所有表。<br />     * 在mysql下是当前用用户的，这个与数据库厂商的jdbc驱动有关系<br />     * @return 返回清空（删除）数据库表的先后顺序<br />     */<br />    public static List&lt;String&gt; getDeleteOrder(Connection connection,String userName)<br />    {<br />        ResultSet reTables = null;<br />        ResultSet refk = null;<br />        try<br />        {<br />            DatabaseMetaData dm = connection.getMetaData();<br />            //如果是oracle数据库的话，清空闪回表<br />            if(dm.getDatabaseProductName().toUpperCase().indexOf("ORACLE")&gt;=0)<br />            {<br />                Statement state = connection.createStatement();<br />                state.execute("PURGE RECYCLEBIN");<br />                state.close();<br />            }<br />            //取得表<br />            reTables = dm.getTables(null, userName, null, new String[]{"TABLE","VIEW"});<br />            List&lt;TableMeta&gt; tableMetaList = new ArrayList&lt;TableMeta&gt;();<br />            while(reTables.next())<br />            {<br />                String tableName = reTables.getString("TABLE_NAME").trim(); <br />                if(tableName == null || tableName.length()&lt;1)<br />                {<br />                    continue;<br />                }<br />                TableMeta tem = new TableMeta(tableName);<br />                tableMetaList.add(tem);<br />                //取得外键表<br />                refk = dm.getExportedKeys(null, userName, tableName);<br />                while(refk.next())<br />                {<br />                    String fkTableName = refk.getString("FKTABLE_NAME").trim();<br />                    if(fkTableName == null || fkTableName.length() &lt; 1 ||<br />                            fkTableName.equals(tableName)) //去掉主外键是自己的小环<br />                    {<br />                        continue;<br />                    }<br />                    tem.addFK(fkTableName);<br />                }<br />                if(refk != null)refk.close();<br />            }<br />            <br />            Iterator&lt;TableMeta&gt; iterator = tableMetaList.iterator();<br />            TableMeta tableMeta = iterator.next();<br />            List&lt;String&gt; deleteOrder = new ArrayList&lt;String&gt;();<br />            int counts = tableMetaList.size();<br />            for(;true;)<br />            {<br />                //没有外键了<br />                if(!tableMeta.isFKTable())<br />                {<br />                    iterator.remove();<br />                    deleteOrder.add(tableMeta.tableName);<br />                    <br />                    //清除表所使用的所有外键表<br />                    for(TableMeta it : tableMetaList)<br />                    {<br />                        it.deleteFK(tableMeta.tableName);<br />                    }<br />                }<br /><br />                if(!iterator.hasNext())<br />                {<br />                    //一次循环完成后，如果tableMeta的长度（也不为零）没有减少，<br />                    //那么说明在tableMeta中的表之间有循环外键关联的“环”，要退出整个循环<br />                    //不然此处就会有一个死循环，此时在tableMeta中的表的设计也许是有问题的<br />                    //如果要分析<br />                    if(tableMetaList.size() == counts || tableMetaList.size() &lt; 1)<br />                    {<br />                        break;<br />                    }<br />                    iterator = tableMetaList.iterator();<br />                }<br />                tableMeta = iterator.next();<br />            }<br />           return deleteOrder;<br />        }<br />        catch (SQLException e)<br />        {<br />            if(refk != null)<br />                try<br />                {<br />                    refk.close();<br />                }<br />                catch (SQLException e1)<br />                {<br />                    e1.printStackTrace();<br />                }<br />            if(reTables != null)<br />                try<br />                {<br />                    reTables.close();<br />                }<br />                catch (SQLException e1)<br />                {<br />                    e1.printStackTrace();<br />                }<br />            e.printStackTrace();<br />        }<br />        return null;<br />    }<br />    /**<br />     * 返回外键环<br />     * @param connection 连接<br />     * @param userName 用户名，可以为空<br />     * @return 返回外键环<br />     */<br />    public static List&lt;String&gt; getExportedKeysLoop(Connection connection,String userName)<br />    {<br />        ResultSet reTables = null;<br />        ResultSet refk = null;<br />        try<br />        {<br />            DatabaseMetaData dm = connection.getMetaData();<br />            //如果是oracle数据库的话，清空闪回表<br />            if(dm.getDatabaseProductName().toUpperCase().indexOf("ORACLE")&gt;=0)<br />            {<br />                Statement state = connection.createStatement();<br />                state.execute("PURGE RECYCLEBIN");<br />                state.close();<br />            }<br />            //取得表<br />            reTables = dm.getTables(null, userName, null, new String[]{"TABLE","VIEW"});<br />            List&lt;TableMeta&gt; tableMetaList = new ArrayList&lt;TableMeta&gt;();<br />            while(reTables.next())<br />            {<br />                String tableName = reTables.getString("TABLE_NAME").trim(); <br />                if(tableName == null || tableName.length()&lt;1)<br />                {<br />                    continue;<br />                }<br />                TableMeta tem = new TableMeta(tableName);<br />                tableMetaList.add(tem);<br />                //取得外键表<br />                refk = dm.getExportedKeys(null, userName, tableName);<br />                while(refk.next())<br />                {<br />                    String fkTableName = refk.getString("FKTABLE_NAME").trim();<br />                    if(fkTableName == null || fkTableName.length() &lt; 1 ||<br />                            fkTableName.equals(tableName)) //去掉主外键是自己的小环<br />                    {<br />                        continue;<br />                    }<br />                    tem.addFK(fkTableName);<br />                }<br />                if(refk != null)refk.close();<br />            }<br />            <br />            Iterator&lt;TableMeta&gt; iterator = tableMetaList.iterator();<br />            TableMeta tableMeta = iterator.next();<br />            List&lt;String&gt; exportedKeysLoop = new ArrayList&lt;String&gt;();<br />            int counts = tableMetaList.size();<br />            for(;true;)<br />            {<br />                //没有外键了<br />                if(!tableMeta.isFKTable())<br />                {<br />                    iterator.remove();                    <br />                    //清除表所使用的所有外键表<br />                    for(TableMeta it : tableMetaList)<br />                    {<br />                        it.deleteFK(tableMeta.tableName);<br />                    }<br />                }<br /><br />                if(!iterator.hasNext())<br />                {<br />                    //一次循环完成后，如果tableMeta的长度（也不为零）没有减少，<br />                    //那么说明在tableMeta中的表之间有循环外键关联的“环”，要退出整个循环<br />                    //不然此处就会有一个死循环，此时在tableMeta中的表的设计也许是有问题的<br />                    //如果要分析<br />                    if(tableMetaList.size() == counts || tableMetaList.size() &lt; 1)<br />                    {<br />                        for(TableMeta it : tableMetaList)<br />                        {<br />                            exportedKeysLoop.add(it.tableName);<br />                        }<br />                        break;<br />                    }<br />                    iterator = tableMetaList.iterator();<br />                }<br />                tableMeta = iterator.next();<br />            }<br />           return exportedKeysLoop;<br />        }<br />        catch (SQLException e)<br />        {<br />            if(refk != null)<br />                try<br />                {<br />                    refk.close();<br />                }<br />                catch (SQLException e1)<br />                {<br />                    e1.printStackTrace();<br />                }<br />            if(reTables != null)<br />                try<br />                {<br />                    reTables.close();<br />                }<br />                catch (SQLException e1)<br />                {<br />                    e1.printStackTrace();<br />                }<br />            e.printStackTrace();<br />        }<br />        return null;<br />    }<br />    /**<br />     * 有重复外键的表<br />     * @param connection 连接<br />     * @param userName 用户名，可以为空<br />     * @return 有重复外键的表<br />     */<br />    public static List&lt;String&gt; getRepeatExportedKeys(Connection connection,String userName)<br />    {<br />        ResultSet reTables = null;<br />        ResultSet refk = null;<br />        try<br />        {<br />            DatabaseMetaData dm = connection.getMetaData();<br />            //如果是oracle数据库的话，清空闪回表<br />            if(dm.getDatabaseProductName().toUpperCase().indexOf("ORACLE")&gt;=0)<br />            {<br />                Statement state = connection.createStatement();<br />                state.execute("PURGE RECYCLEBIN");<br />                state.close();<br />            }<br />            <br />            List&lt;String&gt; repeatExportedKeys = new ArrayList&lt;String&gt;();<br />            //取得表<br />            reTables = dm.getTables(null, userName, null, new String[]{"TABLE","VIEW"});<br />            while(reTables.next())<br />            {<br />                String tableName = reTables.getString("TABLE_NAME").trim(); <br />                if(tableName == null || tableName.length()&lt;1)<br />                {<br />                    continue;<br />                }<br />                TableMeta tem = new TableMeta(tableName);<br />                //取得外键表<br />                refk = dm.getExportedKeys(null, userName, tableName);<br />                while(refk.next())<br />                {<br />                    String fkTableName = refk.getString("FKTABLE_NAME").trim();<br />                    if(fkTableName == null || fkTableName.length() &lt; 1)<br />                    {<br />                        continue;<br />                    }<br />                    if(tem.findFK(fkTableName))<br />                    {<br />                        repeatExportedKeys.add(tem.tableName);<br />                        break;<br />                    }<br />                 }<br />                if(refk != null)refk.close();<br />            }<br />           return repeatExportedKeys;<br />        }<br />        catch (SQLException e)<br />        {<br />            if(refk != null)<br />                try<br />                {<br />                    refk.close();<br />                }<br />                catch (SQLException e1)<br />                {<br />                    e1.printStackTrace();<br />                }<br />            if(reTables != null)<br />                try<br />                {<br />                    reTables.close();<br />                }<br />                catch (SQLException e1)<br />                {<br />                    e1.printStackTrace();<br />                }<br />            e.printStackTrace();<br />        }<br />        return null;<br />    }<br />    public static class TableMeta{<br />        //表名<br />        public String tableName;<br />        //外键表<br />        private List&lt;String&gt; fkTable = new ArrayList&lt;String&gt;(1);<br />        public TableMeta(String table)<br />        {<br />            this.tableName = table;<br />        }<br />        public boolean findFK(String table)<br />        {<br />            return fkTable.contains(table);<br />        }<br />        public void deleteFK(String table)<br />        {<br />            fkTable.remove(table);<br />        }<br />        //是否存在外键表<br />        public boolean isFKTable()<br />        {<br />            return fkTable.size() &gt; 0;<br />        }<br />        public void addFK(String table)<br />        {<br />            //重名处理<br />            if(!findFK(table))<br />            {<br />                fkTable.add(table);<br />            }<br />        }<br />    }<br /><br />}<br /><br /></span><span style="color: rgb(0, 0, 0);"><br /></span></div><br /><br /><br /><br /><img src ="http://www.blogjava.net/peacess/aggbug/80208.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/peacess/" target="_blank">中东</a> 2006-11-09 17:18 <a href="http://www.blogjava.net/peacess/archive/2006/11/09/80208.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个基于gwt的开源项目 -- Dune</title><link>http://www.blogjava.net/peacess/archive/2006/08/04/61790.html</link><dc:creator>中东</dc:creator><author>中东</author><pubDate>Fri, 04 Aug 2006 08:54:00 GMT</pubDate><guid>http://www.blogjava.net/peacess/archive/2006/08/04/61790.html</guid><wfw:comment>http://www.blogjava.net/peacess/comments/61790.html</wfw:comment><comments>http://www.blogjava.net/peacess/archive/2006/08/04/61790.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/peacess/comments/commentRss/61790.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/peacess/services/trackbacks/61790.html</trackback:ping><description><![CDATA[下载：http://sourceforge.net/projects/pdune<br />说明：基于gwt的项目管理的开源项目<br /><br />1，实现了像jsp一样的session管理，这一点是相当好的一个参考实现<br />2，有一个表格的实现<br />3，对gwt自身的例子参考比较多，比如“sink”等<br />4，。。。。。。<br /><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);"></span></div><br /><img src ="http://www.blogjava.net/peacess/aggbug/61790.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/peacess/" target="_blank">中东</a> 2006-08-04 16:54 <a href="http://www.blogjava.net/peacess/archive/2006/08/04/61790.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>