You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by dw...@apache.org on 2009/06/23 18:18:28 UTC
svn commit: r787741 - in /openjpa/trunk:
openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/
openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/
openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/dynamicschema/
Author: dwoods
Date: Tue Jun 23 16:18:28 2009
New Revision: 787741
URL: http://svn.apache.org/viewvc?rev=787741&view=rev
Log:
OPENJPA-946 Oracle create table(s) exceptions. Updated patch and tests provided by Tim McConnell.
Added:
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/dynamicschema/ResWordEntity.java (with props)
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/dynamicschema/TestResWordEntity.java (with props)
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingInfo.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DerbyDictionary.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MySQLDictionary.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/PostgresDictionary.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/dynamicschema/EntityReservedWords.java
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingInfo.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingInfo.java?rev=787741&r1=787740&r2=787741&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingInfo.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingInfo.java Tue Jun 23 16:18:28 2009
@@ -647,9 +647,28 @@
// find existing column
Column col = table.getColumn(colName);
- if (col == null && !adapt)
- throw new MetaDataException(_loc.get(prefix + "-bad-col-name",
- context, colName, table));
+ if (col == null && !adapt) {
+ //
+ // See if column name has already been validated in a dynamic table.
+ // If so then want to use that validated column name instead. This
+ // should seldom if ever occur as long as the database dictionaries
+ // are kept up-to-date.
+ //
+ if ((colName.length() > dict.maxColumnNameLength) ||
+ dict.getInvalidColumnWordSet().contains(colName.toUpperCase()) &&
+ !(table.getClass().getName().contains("DynamicTable"))) {
+ colName=dict.getValidColumnName(colName, new Table());
+ col = table.getColumn(colName);
+ if (col == null && !adapt) {
+ throw new MetaDataException(_loc.
+ get(prefix + "-bad-col-name", context, colName, table));
+ }
+ }
+ else {
+ throw new MetaDataException(_loc.
+ get(prefix + "-bad-col-name", context, colName, table));
+ }
+ }
// use information from template column by default, allowing any
// user-given specifics to override it
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java?rev=787741&r1=787740&r2=787741&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java Tue Jun 23 16:18:28 2009
@@ -133,7 +133,7 @@
"CLUSTER", "COLLECTION", "COLLID", "COMMENT", "CONCAT",
"CONDITION", "CONTAINS", "COUNT_BIG", "CURRENT_LC_CTYPE",
"CURRENT_PATH", "CURRENT_SERVER", "CURRENT_TIMEZONE", "CYCLE",
- "DATA", "DATABASE", "DAYS", "DB2GENERAL", "DB2GENRL", "DB2SQL",
+ "DATABASE", "DAYS", "DB2GENERAL", "DB2GENRL", "DB2SQL",
"DBINFO", "DEFAULTS", "DEFINITION", "DETERMINISTIC", "DISALLOW",
"DO", "DSNHATTR", "DSSIZE", "DYNAMIC", "EACH", "EDITPROC", "ELSEIF",
"ENCODING", "END-EXEC1", "ERASE", "EXCLUDING", "EXIT", "FENCED",
@@ -156,14 +156,16 @@
"SOURCE", "SPECIFIC", "SQLID", "STANDARD", "START", "STATIC",
"STAY", "STOGROUP", "STORES", "STYLE", "SUBPAGES", "SYNONYM",
"SYSFUN", "SYSIBM", "SYSPROC", "SYSTEM", "TABLESPACE", "TRIGGER",
- "TYPE", "UNDO", "UNTIL", "VALIDPROC", "VARIABLE", "VARIANT", "VCAT",
+ "UNDO", "UNTIL", "VALIDPROC", "VARIABLE", "VARIANT", "VCAT",
"VOLUMES", "WHILE", "WLM", "YEARS",
}));
- // reservedWordSet subset that can be used as valid column names
- validColumnWordSet.addAll(Arrays.asList(new String[] {
- "C", "COUNT", "DATE", "DATA", "LABEL", "LOCALE", "NAME", "NUMBER",
- "TIMESTAMP", "VALUE", }));
+ // reservedWordSet subset that CANNOT be used as valid column names
+ // (i.e., without surrounding them with double-quotes)
+ invalidColumnWordSet.addAll(Arrays.asList(new String[] {
+ "CONSTRAINT", "END-EXEC", "END-EXEC1",
+ }));
+
super.setBatchLimit(defaultBatchLimit);
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java?rev=787741&r1=787740&r2=787741&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java Tue Jun 23 16:18:28 2009
@@ -343,9 +343,8 @@
protected boolean connected = false;
protected boolean isJDBC3 = false;
protected final Set reservedWordSet = new HashSet();
- // reservedWordSet subset that can be used as valid column names
- protected Set<String> validColumnWordSet = new HashSet<String>();
- // reservedWordSet subset that cannot be used as valid column names
+ // reservedWordSet subset that CANNOT be used as valid column names
+ // (i.e., without surrounding them with double-quotes)
protected Set<String> invalidColumnWordSet = new HashSet<String>();
protected final Set systemSchemaSet = new HashSet();
protected final Set systemTableSet = new HashSet();
@@ -4250,10 +4249,6 @@
reservedWordSet.addAll(Arrays.asList(Strings.split
(reservedWords.toUpperCase(), ",", 0)));
- // reservedWordSet subset that cannot be used as valid column names
- invalidColumnWordSet = new HashSet(reservedWordSet);
- invalidColumnWordSet.removeAll(validColumnWordSet);
-
// add system schemas set by user
if (systemSchemas != null)
systemSchemaSet.addAll(Arrays.asList(Strings.split
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DerbyDictionary.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DerbyDictionary.java?rev=787741&r1=787740&r2=787741&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DerbyDictionary.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DerbyDictionary.java Tue Jun 23 16:18:28 2009
@@ -73,18 +73,48 @@
"BIGINT", "INTEGER",
}));
reservedWordSet.addAll(Arrays.asList(new String[]{
- "ALIAS", "BIGINT", "BOOLEAN", "CALL", "CLASS",
- "COPY", "DB2J_DEBUG", "EXECUTE", "EXPLAIN",
- "FILE", "FILTER", "GETCURRENTCONNECTION", "INDEX",
- "INSTANCEOF", "KEY", "METHOD", "NEW", "OFF", "OUT", "PROPERTIES",
- "PUBLICATION", "RECOMPILE", "REFRESH", "RENAME",
- "RUNTIMESTATISTICS", "STATEMENT", "STATISTICS",
- "TIMING", "WAIT", "XML",
+ "BOOLEAN", "CALL", "ENDEXEC", "EXPLAIN", "FUNCTION",
+ "GET_CURRENT_CONNECTION", "INOUT", "LONGINT", "LTRIM", "NVARCHAR",
+ "OFF", "OUT", "RTRIM", "SUBSTR", "XML", "XMLEXISTS", "XMLPARSE",
+ "XMLSERIALIZE",
}));
- // reservedWordSet subset that can be used as valid column names
- validColumnWordSet.addAll(Arrays.asList(new String[] {
- "C", "COUNT", "DATE", "DATA", "NAME", "NUMBER", "NULLABLE",
- "TIMESTAMP", "TYPE", "VALUE",
+
+ // reservedWordSet subset that CANNOT be used as valid column names
+ // (i.e., without surrounding them with double-quotes)
+ invalidColumnWordSet.addAll(Arrays.asList(new String[] {
+ "ADD", "ALL", "ALLOCATE", "ALTER", "AND", "ANY", "ARE", "AS", "ASC",
+ "ASSERTION", "AT", "AUTHORIZATION", "AVG", "BEGIN", "BETWEEN",
+ "BIT", "BOOLEAN", "BOTH", "BY", "CALL", "CASCADE", "CASCADED",
+ "CASE", "CAST", "CHAR", "CHARACTER", "CHARACTER_LENGTH", "CHECK",
+ "CLOSE", "COLLATE", "COLLATION", "COLUMN", "COMMIT", "CONNECT",
+ "CONNECTION", "CONSTRAINT", "CONSTRAINTS", "CONTINUE", "CONVERT",
+ "CORRESPONDING", "CREATE", "CURRENT", "CURRENT_DATE",
+ "CURRENT_TIME", "CURRENT_TIMESTAMP", "CURRENT_USER", "CURSOR",
+ "DEALLOCATE", "DEC", "DECIMAL", "DECLARE", "DEFAULT", "DEFERRABLE",
+ "DEFERRED", "DELETE", "DESC", "DESCRIBE", "DIAGNOSTICS",
+ "DISCONNECT", "DISTINCT", "DOUBLE", "DROP", "ELSE", "END",
+ "END-EXEC", "ESCAPE", "EXCEPT", "EXCEPTION", "EXEC", "EXECUTE",
+ "EXISTS", "EXPLAIN", "EXTERNAL", "FALSE", "FETCH", "FIRST", "FLOAT",
+ "FOR", "FOREIGN", "FOUND", "FROM", "FULL", "FUNCTION", "GET",
+ "GLOBAL", "GO", "GOTO", "GRANT", "GROUP", "HAVING", "HOUR",
+ "IDENTITY", "IMMEDIATE", "IN", "INDICATOR", "INITIALLY", "INNER",
+ "INOUT", "INPUT", "INSENSITIVE", "INSERT", "INT", "INTEGER",
+ "INTERSECT", "INTO", "IS", "ISOLATION", "JOIN", "KEY", "LAST",
+ "LEADING", "LEFT", "LIKE", "LOWER", "LTRIM", "MATCH", "MAX", "MIN",
+ "MINUTE", "NATIONAL", "NATURAL", "NCHAR", "NEXT", "NO", "NOT",
+ "NULL", "NULLIF", "NUMERIC", "NVARCHAR", "OF", "ON", "ONLY", "OPEN",
+ "OPTION", "OR", "ORDER", "OUT", "OUTER", "OUTPUT", "OVERLAPS",
+ "PAD", "PARTIAL", "PREPARE", "PRESERVE", "PRIMARY", "PRIOR",
+ "PRIVILEGES", "PROCEDURE", "PUBLIC", "READ", "REAL", "REFERENCES",
+ "RELATIVE", "RESTRICT", "REVOKE", "RIGHT", "ROLLBACK", "ROWS",
+ "RTRIM", "SCHEMA", "SCROLL", "SECOND", "SELECT", "SESSION_USER",
+ "SET", "SMALLINT", "SOME", "SPACE", "SQL", "SQLCODE", "SQLERROR",
+ "SQLSTATE", "SUBSTR", "SUBSTRING", "SUM", "SYSTEM_USER", "TABLE",
+ "TEMPORARY", "TIMEZONE_HOUR", "TIMEZONE_MINUTE", "TO", "TRAILING",
+ "TRANSACTION", "TRANSLATE", "TRANSLATION", "TRIM", "TRUE", "UNION",
+ "UNIQUE", "UNKNOWN", "UPDATE", "UPPER", "USER", "USING", "VALUES",
+ "VARCHAR", "VARYING", "VIEW", "WHENEVER", "WHERE", "WITH", "WORK",
+ "WRITE", "XML", "XMLEXISTS", "XMLPARSE", "XMLSERIALIZE", "YEAR",
}));
}
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MySQLDictionary.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MySQLDictionary.java?rev=787741&r1=787740&r2=787741&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MySQLDictionary.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MySQLDictionary.java Tue Jun 23 16:18:28 2009
@@ -105,15 +105,33 @@
"TINYTEXT", "DOUBLE PRECISION", "ENUM", "SET", "DATETIME",
}));
reservedWordSet.addAll(Arrays.asList(new String[]{
- "INT1", "INT2", "INT4", "FLOAT1", "FLOAT2", "FLOAT4",
"AUTO_INCREMENT", "BINARY", "BLOB", "CHANGE", "ENUM", "INFILE",
- "LOAD", "MEDIUMINT", "OPTION", "OUTFILE", "REPLACE",
- "SET", "STARTING", "TEXT", "UNSIGNED", "ZEROFILL",
+ "INT1", "INT2", "INT4", "FLOAT1", "FLOAT2", "FLOAT4", "LOAD",
+ "MEDIUMINT", "OUTFILE", "REPLACE", "STARTING", "TEXT", "UNSIGNED",
+ "ZEROFILL",
}));
- // reservedWordSet subset that can be used as valid column names
- validColumnWordSet.addAll(Arrays.asList(new String[]{
- "C", "COUNT", "DATE", "DATA", "NAME", "NULLABLE", "NUMBER",
- "TIMESTAMP", "TYPE", "VALUE",
+
+ // reservedWordSet subset that CANNOT be used as valid column names
+ // (i.e., without surrounding them with double-quotes)
+ invalidColumnWordSet.addAll(Arrays.asList(new String[]{
+ "ADD", "ALL", "ALTER", "AND", "AS", "ASC", "BETWEEN", "BINARY",
+ "BLOB", "BOTH", "BY", "CASCADE", "CASE", "CHANGE", "CHAR",
+ "CHARACTER", "CHECK", "COLLATE", "COLUMN", "CONSTRAINT", "CONTINUE",
+ "CONVERT", "CREATE", "CROSS", "CURRENT_DATE", "CURRENT_TIME",
+ "CURRENT_TIMESTAMP", "CURRENT_USER", "CURSOR", "DEC", "DECIMAL",
+ "DECLARE", "DEFAULT", "DELETE", "DESC", "DESCRIBE", "DISTINCT",
+ "DOUBLE", "DROP", "ELSE", "END-EXEC", "EXISTS", "FALSE", "FETCH",
+ "FLOAT", "FLOAT4", "FOR", "FOREIGN", "FROM", "GRANT", "GROUP",
+ "HAVING", "IN", "INFILE", "INNER", "INSENSITIVE", "INSERT", "INT",
+ "INT1", "INT2", "INT4", "INTEGER", "INTERVAL", "INTO", "IS", "JOIN",
+ "KEY", "LEADING", "LEFT", "LIKE", "LOAD", "MATCH", "MEDIUMINT",
+ "NATURAL", "NOT", "NULL", "NUMERIC", "ON", "OPTION", "OR", "ORDER",
+ "OUTER", "OUTFILE", "PRECISION", "PRIMARY", "PROCEDURE", "READ",
+ "REAL", "REFERENCES", "REPLACE", "RESTRICT", "REVOKE", "RIGHT",
+ "SCHEMA", "SELECT", "SET", "SMALLINT", "SQL", "SQLSTATE",
+ "STARTING", "TABLE", "THEN", "TO", "TRAILING", "TRUE", "UNION",
+ "UNIQUE", "UNSIGNED", "UPDATE", "USAGE", "USING", "VALUES",
+ "VARCHAR", "VARYING", "WHEN", "WHERE", "WITH", "WRITE", "ZEROFILL",
}));
// MySQL requires double-escape for strings
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java?rev=787741&r1=787740&r2=787741&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java Tue Jun 23 16:18:28 2009
@@ -163,10 +163,24 @@
"LONG", "MAXEXTENTS", "MINUS", "MODE", "NOAUDIT", "NOCOMPRESS",
"NOWAIT", "OFFLINE", "ONLINE", "PCTFREE", "ROW",
}));
- // reservedWordSet subset that can be used as valid column names
- validColumnWordSet.addAll(Arrays.asList(new String[]{
- "C", "COUNT", "DATA", "NAME", "NULLABLE", "STORE", "TIMESTAMP",
- "TYPE", "VALUE", "VERSION",
+
+ // reservedWordSet subset that CANNOT be used as valid column names
+ // (i.e., without surrounding them with double-quotes)
+ invalidColumnWordSet.addAll(Arrays.asList(new String[]{
+ "ACCESS", "ADD", "ALL", "ALTER", "AND", "ANY", "AS", "ASC", "AUDIT",
+ "BETWEEN", "BY", "CHAR", "CHECK", "CLUSTER", "COLUMN", "COMMENT",
+ "COMPRESS", "CONNECT", "CREATE", "CURRENT", "DATE", "DECIMAL",
+ "DEFAULT", "DELETE", "DESC", "DISTINCT", "DROP", "ELSE", "END-EXEC",
+ "EXCLUSIVE", "EXISTS", "FILE", "FLOAT", "FOR", "FROM", "GRANT",
+ "GROUP", "HAVING", "IDENTIFIED", "IMMEDIATE", "IN", "INCREMENT",
+ "INDEX", "INITIAL", "INSERT", "INTEGER", "INTERSECT", "INTO",
+ "IS", "LEVEL", "LIKE", "LOCK", "LONG", "MAXEXTENTS", "MINUS",
+ "MODE", "NOAUDIT", "NOCOMPRESS", "NOT", "NOWAIT", "NULL", "NUMBER",
+ "OF", "OFFLINE", "ON", "ONLINE", "OPTION", "OR", "ORDER", "PCTFREE",
+ "PRIOR", "PRIVILEGES", "PUBLIC", "REVOKE", "ROW", "ROWS", "SELECT",
+ "SESSION", "SET", "SIZE", "SMALLINT", "TABLE", "THEN", "TO",
+ "UNION", "UNIQUE", "UPDATE", "USER", "VALUES", "VARCHAR", "VIEW",
+ "WHENEVER", "WHERE", "WITH",
}));
substringFunctionName = "SUBSTR";
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/PostgresDictionary.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/PostgresDictionary.java?rev=787741&r1=787740&r2=787741&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/PostgresDictionary.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/PostgresDictionary.java Tue Jun 23 16:18:28 2009
@@ -180,10 +180,22 @@
"RETRIEVE", "RETURNS", "RULE", "SETOF", "STDIN", "STDOUT",
"STORE", "VACUUM", "VERBOSE", "VERSION",
}));
- // reservedWordSet subset that can be used as valid column names
- validColumnWordSet.addAll(Arrays.asList(new String[] {
- "C", "COUNT", "DATE", "DATA", "NAME", "NULLABLE", "NUMBER", "OID",
- "STORE", "TIMESTAMP", "TYPE", "VALUE", "VERSION",
+
+ // reservedWordSet subset that CANNOT be used as valid column names
+ // (i.e., without surrounding them with double-quotes)
+ invalidColumnWordSet.addAll(Arrays.asList(new String[] {
+ "ALL", "AND", "ANY", "AS", "ASC", "AUTHORIZATION", "BETWEEN",
+ "BINARY", "BOTH", "CASE", "CAST", "CHECK", "COLLATE", "COLUMN",
+ "CONSTRAINT", "CREATE", "CROSS", "CURRENT_DATE", "CURRENT_TIME",
+ "CURRENT_TIMESTAMP", "CURRENT_USER", "DEFAULT", "DEFERRABLE",
+ "DESC", "DISTINCT", "DO", "ELSE", "END", "END", "EXCEPT", "FALSE",
+ "FOR", "FOREIGN", "FROM", "FULL", "GRANT", "GROUP", "HAVING", "IN",
+ "INITIALLY", "INNER", "INTERSECT", "INTO", "IS", "ISNULL", "JOIN",
+ "LEADING", "LEFT", "LIKE", "NATURAL", "NOT", "NOTNULL", "NULL",
+ "ON", "ONLY", "OR", "ORDER", "OUTER", "OVERLAPS", "PRIMARY",
+ "REFERENCES", "RIGHT", "SELECT", "SESSION_USER", "SOME", "TABLE",
+ "THEN", "TO", "TRAILING", "TRUE", "UNION", "UNIQUE", "USER",
+ "USING", "VERBOSE", "WHEN", "WHERE",
}));
}
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/dynamicschema/EntityReservedWords.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/dynamicschema/EntityReservedWords.java?rev=787741&r1=787740&r2=787741&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/dynamicschema/EntityReservedWords.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/dynamicschema/EntityReservedWords.java Tue Jun 23 16:18:28 2009
@@ -96,6 +96,9 @@
private Integer years;
private Date zerofill;
private String zone;
+ private Integer type;
+ private String alias;
+ private int Boolean;
public EntityReservedWords() {
}
@@ -484,4 +487,25 @@
public void setZone(String zone) {
this.zone = zone;
}
+
+ public Integer getType() {
+ return type;
+ }
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getAlias() {
+ return alias;
+ }
+ public void setAlias(String alias) {
+ this.alias = alias;
+ }
+
+ public int getBoolean() {
+ return Boolean;
+ }
+ public void setBoolean(int Boolean) {
+ this.Boolean = Boolean;
+ }
}
Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/dynamicschema/ResWordEntity.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/dynamicschema/ResWordEntity.java?rev=787741&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/dynamicschema/ResWordEntity.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/dynamicschema/ResWordEntity.java Tue Jun 23 16:18:28 2009
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.dynamicschema;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+@Entity
+@Table(name="ALIAS_TABLE")
+public class ResWordEntity {
+
+ private int id;
+ private String alias;
+ private int Boolean;
+ private Integer type;
+
+ public void setId(int id) {
+ this.id = id;
+ }
+ @Id
+ public int getId() {
+ return id;
+ }
+
+ public void setAlias(String alias) {
+ this.alias = alias;
+ }
+ @Column(name="ALIAS")
+ public String getAlias() {
+ return alias;
+ }
+
+ public int getBoolean() {
+ return Boolean;
+ }
+ public void setBoolean(int Boolean) {
+ this.Boolean = Boolean;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+ public void setType(Integer type) {
+ this.type = type;
+ }
+}
Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/dynamicschema/ResWordEntity.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/dynamicschema/TestResWordEntity.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/dynamicschema/TestResWordEntity.java?rev=787741&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/dynamicschema/TestResWordEntity.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/dynamicschema/TestResWordEntity.java Tue Jun 23 16:18:28 2009
@@ -0,0 +1,139 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.dynamicschema;
+
+import java.util.Random;
+import javax.persistence.EntityManager;
+import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
+import org.apache.openjpa.persistence.test.SingleEMFTestCase;
+
+/**
+ * <b>TestResWordEntity</b> is used to test the case where reserved words are
+ * translated when multiple schema factories are invoked. In this test the
+ * SynchronizeMapping setting will cause the DynamicSchemaFactory to be
+ * invoked, and the SchemaFactory setting will cause the LazySchemaFactory to
+ * be invoked.
+ */
+public class TestResWordEntity extends SingleEMFTestCase {
+
+ public void setUp() {
+ }
+
+ public void testMultipleSchemafactories1() {
+ OpenJPAEntityManagerFactorySPI emf =
+ createEMF(ResWordEntity.class,
+ "openjpa.ConnectionURL",
+ "jdbc:derby:net://host:1527/databaseName",
+ "openjpa.jdbc.SynchronizeMappings","buildSchema(ForeignKeys=true)",
+ "openjpa.jdbc.SchemaFactory","native(ForeignKeys=true)");
+
+ EntityManager em = emf.createEntityManager();
+ ResWordEntity pe = new ResWordEntity();
+
+ pe.setId(new Random().nextInt());
+ pe.setAlias("AliasVal");
+
+ em.getTransaction().begin();
+ em.persist(pe);
+ em.getTransaction().commit();
+
+ em.clear();
+ ResWordEntity re = em.find(ResWordEntity.class, pe.getId());
+ em.clear();
+ re = em.find(ResWordEntity.class, pe.getId());
+
+ em.close();
+ }
+
+ public void testMultipleSchemafactories2() {
+ OpenJPAEntityManagerFactorySPI emf =
+ createEMF(ResWordEntity.class,
+ "openjpa.ConnectionURL",
+ "jdbc:derby:net://host:1527/databaseName",
+ "openjpa.jdbc.SchemaFactory","native(ForeignKeys=true)",
+ "openjpa.jdbc.SynchronizeMappings","buildSchema(ForeignKeys=true)");
+
+ EntityManager em = emf.createEntityManager();
+ ResWordEntity pe = new ResWordEntity();
+
+ pe.setId(new Random().nextInt());
+ pe.setAlias("AliasVal");
+
+ em.getTransaction().begin();
+ em.persist(pe);
+ em.getTransaction().commit();
+
+ em.clear();
+ ResWordEntity re = em.find(ResWordEntity.class, pe.getId());
+ em.clear();
+ re = em.find(ResWordEntity.class, pe.getId());
+
+ em.close();
+ }
+
+ public void testMultipleSchemafactories3() {
+ OpenJPAEntityManagerFactorySPI emf =
+ createEMF(ResWordEntity.class,
+ "openjpa.ConnectionURL",
+ "jdbc:derby:net://host:1527/databaseName",
+ "openjpa.jdbc.SynchronizeMappings","buildSchema(ForeignKeys=true)");
+
+ EntityManager em = emf.createEntityManager();
+ ResWordEntity pe = new ResWordEntity();
+
+ pe.setId(new Random().nextInt());
+ pe.setAlias("AliasVal");
+
+ em.getTransaction().begin();
+ em.persist(pe);
+ em.getTransaction().commit();
+
+ em.clear();
+ ResWordEntity re = em.find(ResWordEntity.class, pe.getId());
+ em.clear();
+ re = em.find(ResWordEntity.class, pe.getId());
+
+ em.close();
+ }
+
+ public void testMultipleSchemafactories4() {
+ OpenJPAEntityManagerFactorySPI emf =
+ createEMF(ResWordEntity.class,
+ "openjpa.ConnectionURL",
+ "jdbc:derby:net://host:1527/databaseName",
+ "openjpa.jdbc.SchemaFactory","native(ForeignKeys=true)");
+
+ EntityManager em = emf.createEntityManager();
+ ResWordEntity pe = new ResWordEntity();
+
+ pe.setId(new Random().nextInt());
+ pe.setAlias("AliasVal");
+
+ em.getTransaction().begin();
+ em.persist(pe);
+ em.getTransaction().commit();
+
+ em.clear();
+ ResWordEntity re = em.find(ResWordEntity.class, pe.getId());
+ em.clear();
+ re = em.find(ResWordEntity.class, pe.getId());
+
+ em.close();
+ }
+}
Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/dynamicschema/TestResWordEntity.java
------------------------------------------------------------------------------
svn:eol-style = native