zoukankan      html  css  js  c++  java
  • jfinal 连接oracle 数据库把外键当成主键 在mappingkit文件里生成多个主键解决办法

    1 听波总说是ojdbc  这个jar包版本问题 我以前用的ojdbc14 我换成6了之后 还是存在这个问题 所以我重写了jfinal源码里面的方法 也就是第二种方法

    2  下面是我重写的类

    package com.syhz.model;

    import java.sql.ResultSet;
    import java.sql.SQLException;

    import javax.sql.DataSource;

    import com.jfinal.kit.StrKit;
    import com.jfinal.plugin.activerecord.generator.MetaBuilder;
    import com.jfinal.plugin.activerecord.generator.TableMeta;
    /**
    * 重写jfinal生成主键规则
    * @author String
    *
    */
    public class MyMetaBuilder extends MetaBuilder{

    public MyMetaBuilder(DataSource dataSource) {
    super(dataSource);
    // TODO Auto-generated constructor stub
    }

    @Override
    public void buildPrimaryKey(TableMeta tableMeta) throws SQLException{

    ResultSet rs = dbMeta.getPrimaryKeys(conn.getCatalog(), null, tableMeta.name);

    String primaryKey = "";
    int index = 0;
    while (rs.next()) {
    /*if (index++ > 0) {
    primaryKey += ",";
    }*/
    primaryKey = rs.getString("COLUMN_NAME");
    }
    if (StrKit.isBlank(primaryKey)) {
    throw new RuntimeException("primaryKey of table "" + tableMeta.name + "" required by active record pattern");
    }
    tableMeta.primaryKey = primaryKey;
    rs.close();


    }
    }

    使用的话是在 2      generator.setMetaBuilder(new MyMetaBuilder(dataSource2));  用自己重写的MyMetaBuilder 

     

    之所以标记1  2 是要先用1来获取   因为按照常理来说 自己都会单独写一个连接数据库的方法  如果用自己写的方法 在这里直接用的话 会报错 说 数据已经连接  也就是重复连接的意思  所以我是这么做的 

  • 相关阅读:
    UVA 12546 LCM Pair Sum
    两两间的距离都是整数的点集
    Codeforces 11.27
    Codeforces 11.27 B
    UVA 105
    打印自身的程序
    Interval DP
    Tree DP
    参加第五次全国工程建设行业信息化建设高峰论坛 (个人的一点感想)
    基础资料分类及清单版本管理
  • 原文地址:https://www.cnblogs.com/krlin/p/9083055.html
Copyright © 2011-2022 走看看