• 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来获取   因为按照常理来说 自己都会单独写一个连接数据库的方法  如果用自己写的方法 在这里直接用的话 会报错 说 数据已经连接  也就是重复连接的意思  所以我是这么做的 

  • 相关阅读:
    使用 PyCharm 远程调试 Django 项目
    (坑集)Python环境配置
    字典的使用
    列表的使用
    字符串的魔法
    php 文件函数
    php 时间函数
    php xajax库基本知识
    php header函数
    c++注释
  • 原文地址:https://www.cnblogs.com/krlin/p/9083055.html
Copyright © 2020-2023  润新知