Repository: cayenne Updated Branches: refs/heads/master 4dc4650c6 -> 8f3ac8b6a
CAY-2279 cdbimport: skip PK comparison for VIEWs Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/770e3b57 Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/770e3b57 Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/770e3b57 Branch: refs/heads/master Commit: 770e3b579e1ad9b06c09a538c38a89867551a4e7 Parents: 5008dce Author: Anton Dreka <drek...@gmail.com> Authored: Mon Apr 10 12:28:06 2017 +0300 Committer: Anton Dreka <drek...@gmail.com> Committed: Mon Apr 10 12:28:06 2017 +0300 ---------------------------------------------------------------------- .../org/apache/cayenne/dbsync/merge/DbAttributeMerger.java | 7 +++++++ .../org/apache/cayenne/dbsync/merge/DbEntityMerger.java | 7 ++++++- .../apache/cayenne/dbsync/reverse/dbload/EntityLoader.java | 2 ++ .../main/java/org/apache/cayenne/map/DetectedDbEntity.java | 9 +++++++++ docs/doc/src/main/resources/RELEASE-NOTES.txt | 2 ++ 5 files changed, 26 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cayenne/blob/770e3b57/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbAttributeMerger.java ---------------------------------------------------------------------- diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbAttributeMerger.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbAttributeMerger.java index 4511dc5..d24dbe5 100644 --- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbAttributeMerger.java +++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbAttributeMerger.java @@ -30,6 +30,7 @@ import org.apache.cayenne.dbsync.merge.factory.MergerTokenFactory; import org.apache.cayenne.dbsync.merge.token.MergerToken; import org.apache.cayenne.map.DbAttribute; import org.apache.cayenne.map.DbEntity; +import org.apache.cayenne.map.DetectedDbEntity; class DbAttributeMerger extends AbstractMerger<DbEntity, DbAttribute> { @@ -66,6 +67,12 @@ class DbAttributeMerger extends AbstractMerger<DbEntity, DbAttribute> { tokens.add(getTokenFactory().createSetNotNullToDb(originalDbEntity, original)); } + if(original.isPrimaryKey() + && originalDbEntity instanceof DetectedDbEntity + && "VIEW".equals(((DetectedDbEntity) originalDbEntity).getType())) { + // Views doesn't has PKs in a database, but if the user selects some PKs in a model, we put these keys. + return null; + } return tokens; } http://git-wip-us.apache.org/repos/asf/cayenne/blob/770e3b57/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbEntityMerger.java ---------------------------------------------------------------------- diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbEntityMerger.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbEntityMerger.java index 84d7b75..81d90b1 100644 --- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbEntityMerger.java +++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbEntityMerger.java @@ -110,13 +110,18 @@ class DbEntityMerger extends AbstractMerger<DataMap, DbEntity> { Collection<DbAttribute> primaryKeyNew = original.getPrimaryKeys(); String primaryKeyName = null; - if (imported instanceof DetectedDbEntity) { + if (imported instanceof DetectedDbEntity){ + if("VIEW".equals(((DetectedDbEntity) imported).getType())){ + // Views doesn't has PKs in a database, but if the user selects some PKs in a model, we put these keys. + return null; + } primaryKeyName = ((DetectedDbEntity) imported).getPrimaryKeyName(); } if (upperCaseEntityNames(primaryKeyOriginal).equals(upperCaseEntityNames(primaryKeyNew))) { return null; } + return Collections.singleton( getTokenFactory().createSetPrimaryKeyToDb( original, primaryKeyOriginal, primaryKeyNew, primaryKeyName http://git-wip-us.apache.org/repos/asf/cayenne/blob/770e3b57/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/EntityLoader.java ---------------------------------------------------------------------- diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/EntityLoader.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/EntityLoader.java index 9f2afb2..2531a3f 100644 --- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/EntityLoader.java +++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/EntityLoader.java @@ -54,6 +54,7 @@ class EntityLoader extends PerCatalogAndSchemaLoader { String name = rs.getString("TABLE_NAME"); String catalogName = rs.getString("TABLE_CAT"); String schemaName = rs.getString("TABLE_SCHEM"); + String type = rs.getString("TABLE_TYPE"); // Oracle 9i and newer has a nifty recycle bin feature... // but we don't want dropped tables to be included here; @@ -74,6 +75,7 @@ class EntityLoader extends PerCatalogAndSchemaLoader { DetectedDbEntity table = new DetectedDbEntity(name); table.setCatalog(catalogName); table.setSchema(schemaName); + table.setType(type); addDbEntityToMap(table, map); } http://git-wip-us.apache.org/repos/asf/cayenne/blob/770e3b57/cayenne-server/src/main/java/org/apache/cayenne/map/DetectedDbEntity.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/DetectedDbEntity.java b/cayenne-server/src/main/java/org/apache/cayenne/map/DetectedDbEntity.java index 214f561..be95b95 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/map/DetectedDbEntity.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/map/DetectedDbEntity.java @@ -24,11 +24,20 @@ package org.apache.cayenne.map; public class DetectedDbEntity extends DbEntity { protected String primaryKeyName; + protected String type; public DetectedDbEntity(String name) { super(name); } + public void setType(String type) { + this.type = type; + } + + public String getType() { + return type; + } + /** * Sets the optional primary key name of this DbEntity. This is not the same as the * name of the DbAttribute, but the name of the unique constraint. http://git-wip-us.apache.org/repos/asf/cayenne/blob/770e3b57/docs/doc/src/main/resources/RELEASE-NOTES.txt ---------------------------------------------------------------------- diff --git a/docs/doc/src/main/resources/RELEASE-NOTES.txt b/docs/doc/src/main/resources/RELEASE-NOTES.txt index c5b1c56..db30053 100644 --- a/docs/doc/src/main/resources/RELEASE-NOTES.txt +++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt @@ -30,6 +30,7 @@ CAY-2272 ColumnSelect: methods to manually control DISTINCT clause Bug Fixes: +CAY-2021 cdbimport: detect when same FK constraint is defined twice CAY-2077 Bug in CayenneRuntimeException using wrong specified string in Formatter CAY-2094 SelectById query doesn't work from ROP client CAY-2240 Modeler: issue with cursor rendering for EJBQL query @@ -40,6 +41,7 @@ CAY-2265 ServerRuntime.builder() fails to set default runtime name when a the pr CAY-2273 Modeler: default suggested cgen location is rooted in subpackage CAY-2275 Documentation: tutorial is out of sync with 4.0.M5 version CAY-2276 PrePersist listener registered as PostPersist in LifecycleCallbackRegistry.addListener(Class<?>, LifecycleListener) +CAY-2279 cdbimport: skip PK comparison for VIEWs ---------------------------------- Release: 4.0.M5