You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by fa...@apache.org on 2009/12/03 20:11:45 UTC
svn commit: r886883 - in /openjpa/trunk/openjpa-persistence-jdbc/src:
main/java/org/apache/openjpa/persistence/jdbc/
test/java/org/apache/openjpa/persistence/criteria/
test/java/org/apache/openjpa/persistence/embed/
test/java/org/apache/openjpa/persist...
Author: faywang
Date: Thu Dec 3 19:11:45 2009
New Revision: 886883
URL: http://svn.apache.org/viewvc?rev=886883&view=rev
Log:
OPENJPA-782: fix default element collection table name to comply with the Spec
Added:
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/A.java (with props)
Modified:
openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/PersistenceMappingDefaults.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/Person.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/TestEmbeddable.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/attrOverrides/Employee.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/attrOverrides/Person.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/attrOverrides/PropertyRecord.java
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/PersistenceMappingDefaults.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/PersistenceMappingDefaults.java?rev=886883&r1=886882&r2=886883&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/PersistenceMappingDefaults.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/PersistenceMappingDefaults.java Thu Dec 3 19:11:45 2009
@@ -135,8 +135,12 @@
ClassMapping clm = fm.getDefiningMapping();
Table table = getTable(clm);
- String name = table.getName();
-
+ String name = null;
+ if (fm.isElementCollection())
+ name = clm.getTypeAlias();
+ else
+ name = table.getName();
+
// if this is an assocation table, spec says to suffix with table of
// the related type. spec doesn't cover other cases; we're going to
// suffix with the field name
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/Person.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/Person.java?rev=886883&r1=886882&r2=886883&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/Person.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/Person.java Thu Dec 3 19:11:45 2009
@@ -20,6 +20,7 @@
import java.util.Set;
+import javax.persistence.CollectionTable;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
@@ -37,6 +38,7 @@
private String name;
@ElementCollection
+ @CollectionTable(name="CR_PSN_NICKNAMES")
private Set<String> nickNames;
protected Person() {
Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/A.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/A.java?rev=886883&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/A.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/A.java Thu Dec 3 19:11:45 2009
@@ -0,0 +1,72 @@
+/*
+ * 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.embed;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "A_EMB")
+public class A implements java.io.Serializable {
+
+ @Id
+ protected String id;
+
+ String name;
+
+ int value;
+
+ @ElementCollection
+ protected Set<Embed> embeds = new HashSet();
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getValue() {
+ return value;
+ }
+
+ public void setValue(int value) {
+ this.value = value;
+ }
+
+ public Set<Embed> getEmbeds() {
+ return embeds;
+ }
+
+ public void setEmbeds(Set<Embed> embeds) {
+ this.embeds = embeds;
+ }
+}
+
Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/A.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/TestEmbeddable.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/TestEmbeddable.java?rev=886883&r1=886882&r2=886883&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/TestEmbeddable.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/TestEmbeddable.java Thu Dec 3 19:11:45 2009
@@ -27,6 +27,7 @@
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -99,7 +100,7 @@
EntityA_Embed_MappedToOneCascadeDelete.class, EntityB2.class,
Book.class, Listing.class, Seller.class,
EntityA_Embed_Coll_Map.class, Embed_Coll_Map.class,
- EntityA_Embed_Complex.class, CLEAR_TABLES);
+ EntityA_Embed_Complex.class, A.class, CLEAR_TABLES);
sql.clear();
DBDictionary dict = ((JDBCConfiguration)emf.getConfiguration()).getDBDictionaryInstance();
if (dict.getClass().getName().indexOf("oracle") != -1) {
@@ -2956,5 +2957,36 @@
assertEquals(6, findA.getEmbeds().size());
em.close();
}
+
+ /*
+ * test the default name for element collection table
+ */
+ public void testDefaultNameForElementCollection() {
+ getLog().trace("testDefaultNameForElementCollection() - entered");
+ EntityManager em = emf.createEntityManager();
+ EntityTransaction tran = em.getTransaction();
+ tran.begin();
+ A a = new A();
+ a.setId("1");
+ Embed embed = new Embed();
+ embed.setIntVal1(1);
+ embed.setIntVal2(2);
+ embed.setIntVal3(3);
+ Set embeds = new HashSet();
+ embeds.add(embed);
+ a.setEmbeds(embeds);
+ tran.commit();
+ em.close();
+ boolean found = false;
+ for (String sqlStr : sql) {
+ if (sqlStr.toUpperCase().indexOf("A_EMBEDS") != -1) {
+ found = true;
+ break;
+ }
+ }
+ assertTrue(found);
+
+ }
+
}
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/attrOverrides/Employee.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/attrOverrides/Employee.java?rev=886883&r1=886882&r2=886883&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/attrOverrides/Employee.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/attrOverrides/Employee.java Thu Dec 3 19:11:45 2009
@@ -61,6 +61,7 @@
ContactInfo contactInfo;
@ElementCollection
+ @CollectionTable(name="EMP_ATTROVER_jobInfos")
@AssociationOverride (
name="value.pm",
joinColumns=@JoinColumn(name="PROGRAM_MGR")
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/attrOverrides/Person.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/attrOverrides/Person.java?rev=886883&r1=886882&r2=886883&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/attrOverrides/Person.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/attrOverrides/Person.java Thu Dec 3 19:11:45 2009
@@ -20,7 +20,7 @@
import java.util.ArrayList;
import java.util.List;
-
+import javax.persistence.CollectionTable;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.Id;
@@ -39,6 +39,7 @@
protected List<Address> residences = new ArrayList<Address>();
@ElementCollection
+ @CollectionTable(name="PSN_nickNames")
@OrderBy("DESC")
private List<String> nickNames = new ArrayList<String>();
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/attrOverrides/PropertyRecord.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/attrOverrides/PropertyRecord.java?rev=886883&r1=886882&r2=886883&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/attrOverrides/PropertyRecord.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/attrOverrides/PropertyRecord.java Thu Dec 3 19:11:45 2009
@@ -36,6 +36,7 @@
@AttributeOverride(name="value.tax", column=@Column(name="ASSESSMENT"))
})
@ElementCollection
+ @CollectionTable(name="PROPREC_ATTROVER_parcels")
Map<Address, PropertyInfo> parcels = new HashMap<Address, PropertyInfo>();
@Column(length = 10)