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/15 23:26:12 UTC

svn commit: r891035 - in /openjpa/trunk/openjpa-persistence-jdbc/src: main/java/org/apache/openjpa/persistence/jdbc/ test/java/org/apache/openjpa/persistence/embed/

Author: faywang
Date: Tue Dec 15 22:26:11 2009
New Revision: 891035

URL: http://svn.apache.org/viewvc?rev=891035&view=rev
Log:
OPENJPA-1431: fix @Temporal annotation when used in conjunction with @Column and @ElementCollection

Modified:
    openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingParser.java
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/A.java
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/TestEmbeddable.java

Modified: openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingParser.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingParser.java?rev=891035&r1=891034&r2=891035&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingParser.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingParser.java Tue Dec 15 22:26:11 2009
@@ -1480,9 +1480,12 @@
                 String.valueOf(cols.size()), "1"));
         if (cols.isEmpty()) {
             cols = Arrays.asList(new Column[]{ new Column() });
-            if (fm.isElementCollection())
-                fm.getElementMapping().getValueInfo().setColumns(cols);
-            else
+            if (fm.isElementCollection()) {
+                if (!fm.getElementMapping().getValueInfo().getColumns().isEmpty())
+                    cols = fm.getElementMapping().getValueInfo().getColumns();
+                else    
+                    fm.getElementMapping().getValueInfo().setColumns(cols);
+            } else
                 fm.getValueInfo().setColumns(cols);
         }
 

Modified: 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=891035&r1=891034&r2=891035&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/A.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/A.java Tue Dec 15 22:26:11 2009
@@ -18,13 +18,15 @@
  */
 package org.apache.openjpa.persistence.embed;
 
+import java.util.Collection;
+import java.util.Date;
 import java.util.HashSet;
 import java.util.Set;
 
 import javax.persistence.*;
 
 @Entity
-@Table(name = "A_EMB")
+@Table(name = "A_EMBED")
 public class A implements java.io.Serializable {
 
     @Id
@@ -37,6 +39,14 @@
     @ElementCollection
     protected Set<Embed> embeds = new HashSet();
 
+    @CollectionTable(name = "collectionTemporalOrderColumnTable", 
+            joinColumns = @JoinColumn(name = "parent_id"))
+    @ElementCollection(fetch = FetchType.EAGER)
+    @Column(name = "value")
+    @OrderColumn(name = "valueOrderColumn")
+    @Temporal(TemporalType.DATE)
+    private Collection<Date> collectionDate;
+
     public String getId() {
         return id;
     }
@@ -68,5 +78,14 @@
     public void setEmbeds(Set<Embed> embeds) {
         this.embeds = embeds;
     }
+    
+    public Collection<Date> getCollectionDate() {
+        return collectionDate;
+    }
+
+    public void setCollectionDate(Collection<Date> collectionDate) {
+        this.collectionDate = collectionDate;
+    }
+    
 }    
    

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=891035&r1=891034&r2=891035&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 Tue Dec 15 22:26:11 2009
@@ -21,6 +21,7 @@
 import java.io.IOException;
 import java.sql.SQLException;
 import java.sql.Timestamp;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Collection;
@@ -2975,8 +2976,11 @@
         Set embeds = new HashSet();
         embeds.add(embed);
         a.setEmbeds(embeds);
+        Collection<Date> dates = new ArrayList<Date>();
+        dates.add(new Date());
+        a.setCollectionDate(dates);
+        em.persist(a);
         tran.commit();
-        em.close();
         boolean found = false;
         for (String sqlStr : sql) {
             if (sqlStr.toUpperCase().indexOf("A_EMBEDS") != -1) {
@@ -2986,7 +2990,13 @@
         }
         assertTrue(found);
         
+        found = false;
+        for (String sqlStr : sql) {
+            if (sqlStr.toUpperCase().indexOf("VALUE") != -1) {
+                found = true;
+                break;
+            } 
+        }
+        assertTrue(found);
     }
-    
-    
 }