首页 | 公告 | 参考资料  | 教程 | 框架/设计 | 源码/下载 | 构件产品 | MyRSS | 博客 
简易java开源论坛->EasyDBO提问区
  版主:天意
 版面公告:和大家一起学习EasyDBO!
搜索 文章标题: 发表人:
[回复] [精华帖] [版主管理]
 主题:EasyDBO错误收集帖 [收藏]
  [引用回复]

大家如果在使用的过程当中碰到了是关于EasyDBO的错误,麻烦都放到这里,大家一起来解决,也免得大家遇到了相同的问题还是不知道解决方法。

由于公司内网上不了SVN,所以把EasyDBO更新的代码就直接放到这里了,只有源文件!
相关附件下载: /bbs/upfile/doc/20060704/11520151896781157793070.rar

 楼主:William Tue Nov 07 09:47:46 CST 2006
 
  [引用回复]

修改主要是针对connection的,可能不是很理想,就是在使用完EasyDBO实例的时候都要调用close()函数关闭当前会话连接。主要是学习,呵呵,如果大家有什么好的想法可以一起讨论。
 发言人:William 楼层:1  2006-07-04 20:20:10.227
 
  [引用回复]

William的SVN是什么问题呢?域名解析原原因吗?
 发言人:大峡 楼层:2  2006-07-05 12:59:30.117
 
  [引用回复]

因为在公司是用的内网,然后通过代理上的外网,SVN也可以设置通过代理上网,可以一直没法登陆。
 发言人:William 楼层:3  2006-07-05 13:11:38.607
 
  [引用回复]

中国需要像你们这样的开源人
 发言人:218.108.88.67 楼层:4  2006-08-05 17:29:56.113
 
  [引用回复]

希望能对oracle支持
 发言人:218.28.133.50 楼层:5  2006-10-10 11:23:49.093
 
  [引用回复]

把开源Blog系统的EasyDBO换成0.9.0后,出现下面的错误!这应该是把接口映射中,BlogNewsDoc中多了一个df属性而引起的。希望更正,并实现对以前的版本支持。


错误如下:
422  [http-80-Processor25] ERROR com.easyjf.dbo.EasyJDBEngine  - 数据查询错误:java.sql.SQLException: 列名 'df' 无效。:sql=select inputUser,title,df,template,displayTime,cid,publish,newsDirPath,dirPath,files,newsDirSn,tagPic,url,inputTime,dirSn,enableReview,types,replyNum,keywords,intro,content,onlyRssIntro,status,enableRss,readTimes,imgs,guestReview,elite,source,topMessage from BlogNewsDoc where cid=?
java.sql.SQLException: 列名 'df' 无效。
   at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:365)
   at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2781)
   at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2224)
   at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:628)
   at net.sourceforge.jtds.jdbc.MSCursorResultSet.processOutput(MSCursorResultSet.java:933)
   at net.sourceforge.jtds.jdbc.MSCursorResultSet.cursorCreate(MSCursorResultSet.java:541)
   at net.sourceforge.jtds.jdbc.MSCursorResultSet.<init>(MSCursorResultSet.java:154)
   at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:365)
   at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatement.java:693)
   at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:92)
   at com.easyjf.dbo.DatabaseDAO.preparedQuery(Unknown Source)
   at com.easyjf.dbo.EasyJDBEngine.get(Unknown Source)
   at com.easyjf.dbo.EasyJDB.get(Unknown Source)
   at com.easyjf.dbo.EasyJDB.query(Unknown Source)
   at com.easyjf.dbo.EasyJDB.query(Unknown Source)
   at com.easyjf.web.tools.EasyDBODAO.query(EasyDBODAO.java:83)
   at com.easyjf.web.tools.DbQuery.getResult(DbQuery.java:38)
   at com.easyjf.web.tools.PageList.doList(PageList.java:67)
   at com.easyjf.web.tools.DbPageList.doList(DbPageList.java:61)
   at com.easyjf.blog.logic.impl.BlogCoreServiceImpl.getTopBlogNewsDoc(BlogCoreServiceImpl.java:181)
   at com.easyjf.blog.web.action.BlogAction.doInit(BlogAction.java:59)
   at com.easyjf.web.tools.AbstractCmdAction.execute(AbstractCmdAction.java:49)
   at com.easyjf.web.RequestProcessor.getResult(RequestProcessor.java:187)
   at com.easyjf.web.RequestProcessor.process(RequestProcessor.java:136)
   at com.easyjf.web.ActionServlet.doRequest(ActionServlet.java:146)
   at com.easyjf.web.ActionServlet.doGet(ActionServlet.java:83)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
   at com.easyjf.web.CharsetFilter.doFilter(CharsetFilter.java:52)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
   at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
   at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
   at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
   at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
   at java.lang.Thread.run(Unknown Source)
 发言人:222.183.94.9 楼层:6  2006-10-19 13:22:05.607
 
  [引用回复]

希望能对oracle支持

现在应该能支持oracle了,
已经加入了oracle的方言。

如果在使用时有问题,
希望能回馈给我们信息,
谢谢支持
 发言人:222.212.51.161 楼层:7  2006-10-20 18:29:50.487
 
  [引用回复]

298389 [http-8081-Processor24] ERROR com.easyjf.dbo.EasyJDB  - 数据库对象转换为j
ava对象错误:java.lang.NullPointerException
java.lang.NullPointerException
       at com.easyjf.dbo.EasyJDB.dbo2obj(EasyJDB.java:119)
       at com.easyjf.dbo.EasyJDB.dbo2obj(EasyJDB.java:92)
       at com.easyjf.dbo.EasyJDB.get(EasyJDB.java:737)
       at com.easyjf.dbo.EasyJDB.query(EasyJDB.java:497)
       at com.easyjf.dbo.EasyJDB.query(EasyJDB.java:415)
       at com.easyjf.web.tools.EasyDBODAO.query(EasyDBODAO.java:66)
       at com.easyjf.web.tools.DbQuery.getResult(DbQuery.java:38)
       at com.easyjf.web.tools.PageList.doList(PageList.java:67)
       at com.easyjf.web.tools.DbPageList.doList(DbPageList.java:62)
       at com.easyjf.chat.action.ChatRoomAction.doQuery(ChatRoomAction.java:114
)
       at com.easyjf.web.tools.AbstractCrudAction.doQuery(AbstractCrudAction.ja
va:169)
       at com.easyjf.chat.action.ChatRoomAction.doCreate(ChatRoomAction.java:48
)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
 发言人:218.28.133.54 楼层:8  2006-10-23 09:45:24.707
 
  [引用回复]

EasyDBO:select * from ChatRoom where cid=?
297078 [http-8081-Processor24] ERROR com.easyjf.dbo.DatabaseDAO  - 不支持的参数
类型!
297078 [http-8081-Processor24] ERROR com.easyjf.dbo.EasyJDBEngine  - 数据查询错
误:java.sql.SQLException: ORA-01008: 并非所有变量都已关联
:sql=select * from ChatRoom where cid=?
java.sql.SQLException: ORA-01008: 并非所有变量都已关联

       at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180)
       at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
       at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:543)
       at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1451)
       at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteDescribe(TTC7Protocol.java:
651)
       at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.jav
a:2117)
       at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStateme
nt.java:2331)
       at oracle.jdbc.driver.OraclePreparedStatement.doScrollPstmtExecuteUpdate
(OraclePreparedStatement.java:3450)
       at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePrepar
edStatement.java:456)
       at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePrepare
dStatement.java:366)
       at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(Dele
gatingPreparedStatement.java:92)
       at com.easyjf.dbo.DatabaseDAO.preparedQuery(DatabaseDAO.java:354)
       at com.easyjf.dbo.EasyJDBEngine.get(EasyJDBEngine.java:261)
       at com.easyjf.dbo.EasyJDB.get(EasyJDB.java:735)
       at com.easyjf.dbo.EasyJDB.query(EasyJDB.java:497)
       at com.easyjf.dbo.EasyJDB.query(EasyJDB.java:415)
       at com.easyjf.web.tools.EasyDBODAO.query(EasyDBODAO.java:66)
       at com.easyjf.web.tools.DbQuery.getResult(DbQuery.java:38)
       at com.easyjf.web.tools.PageList.doList(PageList.java:67)
       at com.easyjf.web.tools.DbPageList.doList(DbPageList.java:62)
       at com.easyjf.chat.action.ChatRoomAction.doQuery(ChatRoomAction.java:114
)
       at com.easyjf.web.tools.AbstractCrudAction.doQuery(AbstractCrudAction.ja
va:169)
       at com.easyjf.chat.action.ChatRoomAction.doCreate(ChatRoomAction.java:48
)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:324)
       at com.easyjf.web.tools.AbstractCrudAction.execute(AbstractCrudAction.ja
va:77)
       at com.easyjf.web.RequestProcessor.getResult(RequestProcessor.java:134)
       at com.easyjf.web.RequestProcessor.process(RequestProcessor.java:112)
       at com.easyjf.web.ActionServlet.doRequest(ActionServlet.java:179)
       at com.easyjf.web.ActionServlet.doPost(ActionServlet.java:155)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:237)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:157)
       at com.easyjf.web.CharsetFilter.doFilter(CharsetFilter.java:52)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:186)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:157)
       at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:214)
       at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
eContext.java:104)
       at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:520)
       at org.apache.catalina.core.StandardContextValve.invokeInternal(Standard
 发言人:218.28.133.54 楼层:9  2006-10-23 09:45:49.393
 
  [引用回复]

EasyDBO:select * from ChatRoom where cid=?
297078...

这个应该是EasyDBO中没有处理好字段大小写的问题所致。在Oracle里面还有问题,需要改进!
 发言人:222.183.80.23 楼层:10  2006-10-23 10:25:48.067
 
  [引用回复]

针对使用oracle 的情况中出现的错误

Exception in thread "main" java.lang.NullPointerException
   at com.easyjf.dbo.DboCache.getKey(DboCache.java:392)
   at com.easyjf.dbo.DboCache.get(DboCache.java:284)
   at com.easyjf.dbo.EasyJDB.get(EasyJDB.java:1058)
   at com.easyjf.dbo.EasyJDB.query(EasyJDB.java:758)
   at com.easyjf.dbo.EasyJDB.query(EasyJDB.java:676)
   at com.easyjf.dbo.EasyJDB.query(EasyJDB.java:639)
   at com.easyjf.dbo.EasyJDB.query(EasyJDB.java:611)
   at samples.com.easyjf.dbo.example.Message1.main(Message1.java:98)

oracle中区分大小写的
在DatabaseDAO中

/**
    * 把java.sql.ResultSet结果集rs转换成Map集合
    *
    * @param rs
    *            ResultSet 待转换的ResultSet
    * @return Map
    * @throws Exception
    */
   public Map resultSet2Map(ResultSet rs) throws Exception {
       if (rs == null) {
           return null;
       }

       ResultSetMetaData meta = rs.getMetaData();
       int count = meta.getColumnCount();
       Map map = new HashMap(count);

       for (int i = 1; i <= count; i++) {
           map.put(meta.getColumnName(i), rs.getObject(i));
       }

       return map;
   }
需要修改map的key为小写
即:
/**
    * 把java.sql.ResultSet结果集rs转换成Map集合
    *
    * @param rs
    *            ResultSet 待转换的ResultSet
    * @return Map
    * @throws Exception
    */
   public Map resultSet2Map(ResultSet rs) throws Exception {
       if (rs == null) {
           return null;
       }

       ResultSetMetaData meta = rs.getMetaData();
       int count = meta.getColumnCount();
       Map map = new HashMap(count);

       for (int i = 1; i <= count; i++) {
           map.put(meta.getColumnName(i).toLowerCase(), rs.getObject(i));
       }

       return map;
   }
 发言人:210.82.94.9 楼层:11  2006-10-23 10:32:53.567
 
  [引用回复]

在EasyJDB的方法 query(Class cls, String scope, Collection params, int begin,
           int max, boolean cache)中

if (table.getId() != null) { // 先查ID,然后根据ID从缓存中读取数据
           String sql = "select " + table.getId() + " from " + table.getName()
                   + " where " + scope;
           
           list = dbEngine.query(sql, params, begin, max);

           if (list != null) {
               for (int i = 0; i < list.size(); i++) {
                   DBObject tmpO = (DBObject) list.get(i);
                   Object cid = tmpO.get(table.getId());
                   list.set(i, get(cls, cid));
               }
           }
       }

如果我没有用到缓存 还需要从缓存中取吗?
改为以下是否合理?
if (table.getId() != null&&enableCache) { // 先查ID,然后根据ID从缓存中读取数据
           String sql = "select " + table.getId() + " from " + table.getName()
                   + " where " + scope;
           
           list = dbEngine.query(sql, params, begin, max);

           if (list != null) {
               for (int i = 0; i < list.size(); i++) {
                   DBObject tmpO = (DBObject) list.get(i);
                   Object cid = tmpO.get(table.getId());
                   list.set(i, get(cls, cid));
               }
           }
       }
 发言人:210.82.94.9 楼层:12  2006-10-23 11:02:22.567
 
  [引用回复]

^^
EasyJWeb框架错误:
frameworkException : null
详细请查http://www.easyjf.com

com.easyjf.web.FrameWorkException: frameworkException : null
   at com.easyjf.web.RequestProcessor.getResult(RequestProcessor.java:189)
   at com.easyjf.web.RequestProcessor.process(RequestProcessor.java:136)
   at com.easyjf.web.ActionServlet.doRequest(ActionServlet.java:146)
   at com.easyjf.web.ActionServlet.doPost(ActionServlet.java:88)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
   at com.easyjf.web.CharsetFilter.doFilter(CharsetFilter.java:52)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
   at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
   at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
   at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
   at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
   at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
   at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
   at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
   at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
   at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
   at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
   at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
   at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
   at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:300)
   at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:374)
   at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:743)
   at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:675)
   at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:866)
   at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
   at java.lang.Thread.run(Thread.java:534)
Caused by: java.lang.reflect.InvocationTargetException
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:324)
   at com.easyjf.web.tools.AbstractCmdAction.execute(AbstractCmdAction.java:42)
   at com.easyjf.web.RequestProcessor.getResult(RequestProcessor.java:187)
   ... 34 more
Caused by: java.lang.NullPointerException
   at com.easyjf.bbs.action.BBSUserAction.doLogin(BBSUserAction.java:114)
   ... 40 more
 发言人:Roger_Supporter 楼层:13  2006-10-23 16:50:30.88
 
  [引用回复]

谢谢楼上的。已经记录了。EasyDBO-1.0发布之前将针对Oracle专门测试,还会从易用性上作一些突破性的调整。
 发言人:大峡 楼层:14  2006-10-23 22:23:36.613
 
  [引用回复]

针对现实情况中一张表可能由组合字段组成主键,为此我做了以下修改
public class DBObject {
   private Map idValue; // 主键值
..

public Object getIdValue(String key) {
       return (idValue != null) ? idValue.get(key) : null;
   }
public void setIdValue(String key, Object obj) {
       if (this.idValue == null) {
           this.idValue = new HashMap();
       }

       this.idValue.put(key, obj);
   }

在初始化配置中
可以有多个id
<class name="samples.com.easyjf.dbo.example.Message" table="Message">
      <!-- 主键不能为空  -->
       <id name="cid" type="string">
           <column name="cid" length="16" not-null="true"/>
       </id>
       <id name="title" type="string">
           <column name="title" length="50" not-null="true" />
       </id>
       <property name="content" type="string">
           <column name="content"  length="100"/>
       </property>  
</class>

在XMLConfigFactory中

           List idList = e.selectNodes("id");
           if ((idList != null) && (idList.size() > 0)) {
               String pkid="";
               for (int j = 0; j < idList.size(); j++) {
                   Element id = (Element) idList.get(j);
                   if (id != null) {
                       List idColumn = id.selectNodes("column");
                       if ((idColumn != null) && (idColumn.size() > 0)) {
                           Element column = (Element) idColumn.get(0);
                           if (column != null) {
                               DBField field = new DBField();
                               //name
                               field.setName(column.attributeValue("name"));
                               //主键名
                               //table.setId(column.attributeValue("name"));
                               if(pkid.equals(""))
                                   pkid=column.attributeValue("name");
                               else
                                   pkid+=","+column.attributeValue("name");
                               //type
                               Class fieldType = com.easyjf.dbo.JavaTypeRegister
                                       .getInstance().findType(
                                               id.attributeValue("type"));
                               if (fieldType == null)
                                   fieldType = Class.forName(id
                                           .attributeValue("type"));
                               field.setType(fieldType);
                               table
                                       .addField(id.attributeValue("name"),
                                               field);
                               //length
                               try {
                                   field.setLength(Integer.parseInt(column
                                           .attributeValue("length")));
                               }
                               catch (Exception ex) {
                               }

                               field.setNotNull(true);

                           }
                       }

                       List idGenerator = id.selectNodes("generator");
                       if ((idGenerator != null) && (idGenerator.size() > 0)) {
                           Element generator = (Element) idGenerator.get(0);
                           if (generator != null) {
                               table.setIdGenerator(generator.attributeValue("class"));
                           }
                       }
                   }
               }
               table.setId(pkid);
           }



pkid=cid,title


在EasyJDB中

private DBObject obj2dbo(Object obj) {
       /**
        * 若obj本来就是泛数据表DBOjbect对象,则直接返回
        */
       if (obj.getClass() == DBObject.class) {
           return (DBObject) obj;
       }
       DBTable table = findTable(obj.getClass());
       DBObject dbo = new DBObject(table);
       dbo.setValue(obj2dboMap(obj, table));
       String pkid=table.getId();
       if(pkid!=null&&!pkid.equals("")){
           String pkidArry[]=pkid.split(",");
           for(int i=0;i<pkidArry.length;i++)
               dbo.setIdValue(pkidArry[i],dbo.get(pkidArry[i]));
       }
       return dbo;
   }
当然还有其它地方要修改
这样可以解决主键是由多个字段组合的情况

还有一种情况 一个表没有主健的情况 比如 日志表等


以上修改不知是否合理可行?
 发言人:210.82.94.9 楼层:15  2006-10-24 13:30:53.457
 
  [引用回复]

com.easyjf.cache.Config类的单例模式实现有错误!
public Config(String fileName) {
   this.fileName = fileName;
}
 发言人:俊哥 楼层:16  2006-11-07 09:47:46.647
16条回复 共1页,目前为第1 分页: 
[精华帖] [刷新]
 请在下面输入回复信息

表情图片
(加入心情图标)



内容:
相关图片: 各图片之间用逗号隔开
相关附件: 各附件之间用逗号隔开
用户名: 您还没有[ 注册]或[登录
 

Aboutus | 联系我们 | 程序开发 | 网站地图 | 留言板