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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值