From 78df572becd3b51b48368d0ec005eea5d8dd1f30 Mon Sep 17 00:00:00 2001 From: Redkale <22250530@qq.com> Date: Sun, 6 May 2018 18:20:23 +0800 Subject: [PATCH] --- src/org/redkale/source/EntityInfo.java | 4 ++++ src/org/redkale/source/PoolSource.java | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/org/redkale/source/EntityInfo.java b/src/org/redkale/source/EntityInfo.java index 963ad4154..a8c5dc756 100644 --- a/src/org/redkale/source/EntityInfo.java +++ b/src/org/redkale/source/EntityInfo.java @@ -657,6 +657,10 @@ public final class EntityInfo { return sb; } + public String getTableCopySQL(String newTable) { + return tablecopySQL.replace("${newtable}", newTable).replace("${oldtable}", table); + } + /** * 根据主键值获取Entity的表名 * diff --git a/src/org/redkale/source/PoolSource.java b/src/org/redkale/source/PoolSource.java index a51280a8f..1b38ba735 100644 --- a/src/org/redkale/source/PoolSource.java +++ b/src/org/redkale/source/PoolSource.java @@ -97,11 +97,12 @@ public abstract class PoolSource { this.props.setProperty(JDBC_CONTAIN_SQLTEMPLATE, "CHARINDEX(${column}, ${keystr}) > 0"); this.props.setProperty(JDBC_NOTCONTAIN_SQLTEMPLATE, "CHARINDEX(${column}, ${keystr}) = 0"); } else if ("postgresql".equals(this.dbtype)) { - if (!this.props.containsKey(JDBC_TABLECOPY_SQLTEMPLATE)) { + if (!this.props.containsKey(JDBC_TABLECOPY_SQLTEMPLATE)) { //注意:此语句复制表结构会导致默认值和主键信息的丢失 + //注意:postgresql不支持跨库复制表结构 this.props.setProperty(JDBC_TABLECOPY_SQLTEMPLATE, "CREATE TABLE ${newtable} AS (SELECT * FROM ${oldtable} LIMIT 0)"); } if (!this.props.containsKey(JDBC_TABLENOTEXIST_SQLSTATES)) { - this.props.setProperty(JDBC_TABLENOTEXIST_SQLSTATES, "42P01"); + this.props.setProperty(JDBC_TABLENOTEXIST_SQLSTATES, "42P01;3F000"); } } }