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)