You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by jr...@apache.org on 2009/05/11 23:59:21 UTC

svn commit: r773704 [1/4] - in /openjpa/trunk: openjpa-kernel/src/main/java/org/apache/openjpa/enhance/ openjpa-kernel/src/main/java/org/apache/openjpa/meta/ openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/ openjpa-persiste...

Author: jrbauer
Date: Mon May 11 21:59:15 2009
New Revision: 773704

URL: http://svn.apache.org/viewvc?rev=773704&view=rev
Log:
OPENJPA-926 Tests and code updates for explicit access types

Added:
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/AbstractMappedSuperField.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/AbstractMappedSuperProperty.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/DefFieldMixedPropAccess.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/DefPropMixedFieldAccess.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedFieldAccess.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedId.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedInnerProp.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedMixedAccess.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedOuterField.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedPropAccess.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldAccess.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldAccessPropStratsEntity.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldEmbedEntity.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldSub.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldSub2.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldSub3.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MappedSuperField.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MappedSuperProperty.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MixedFieldSub.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MixedMappedSuper.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MixedMultEmbedEntity.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MixedNestedEmbedEntity.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/PropAccess.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/PropAccessFieldStratsEntity.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/PropEmbedEntity.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/PropMixedEntity.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/PropertySub.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/PropertySub2.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/PropertySub3.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/SuperFieldEntity.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/SuperPropertyEntity.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/TestDefaultAccess.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/TestExplicitAccess.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/xml/
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/xml/TestXMLExplicitAccess.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/xml/XMLAbstractMappedSuperField.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/xml/XMLAbstractMappedSuperProperty.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/xml/XMLDefFieldMixedPropAccess.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/xml/XMLDefPropMixedFieldAccess.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/xml/XMLEmbedFieldAccess.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/xml/XMLEmbedMixedAccess.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/xml/XMLEmbedPropAccess.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/xml/XMLFieldAccess.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/xml/XMLFieldEmbedEntity.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/xml/XMLFieldSub.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/xml/XMLFieldSub2.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/xml/XMLFieldSub3.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/xml/XMLMappedSuperField.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/xml/XMLMappedSuperProperty.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/xml/XMLMixedFieldSub.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/xml/XMLMixedMappedSuper.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/xml/XMLPropAccess.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/xml/XMLPropEmbedEntity.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/xml/XMLPropMixedEntity.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/xml/XMLPropertySub.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/xml/XMLPropertySub2.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/xml/XMLPropertySub3.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/xml/XMLSuperFieldEntity.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/xml/XMLSuperPropertyEntity.java   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/access/
    openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/access/access-def-field-orm.xml   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/access/access-def-persistence.xml   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/access/access-def-prop-orm.xml   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/access/access-orm.xml   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/access/access-persistence.xml   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/access/access-pudef-field-orm.xml   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/access/access-pudef-persistence.xml   (with props)
    openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/access/access-pudef-prop-orm.xml   (with props)
Modified:
    openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java
    openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java
    openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ValueMetaData.java
    openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ValueMetaDataImpl.java
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/PersistenceTestCase.java
    openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataDefaults.java
    openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java?rev=773704&r1=773703&r2=773704&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java Mon May 11 21:59:15 2009
@@ -615,6 +615,18 @@
         BCField returned, assigned = null;
         for (int i = 0; i < fmds.length; i++) {
 
+            if (!(fmds[i].getBackingMember() instanceof Method) ) {
+                // If not mixed access is not defined, flag the field members, 
+                // otherwise do not process them because they are valid
+                // persistent attributes.
+                if (!_meta.isMixedAccess()) {
+                    addViolation("property-bad-member",
+                        new Object[]{ fmds[i], fmds[i].getBackingMember() },
+                        true);
+                }
+                continue;
+            }
+            
             meth = (Method) fmds[i].getBackingMember();
             // ##### this will fail if we override and don't call super.
             BCClass declaringType = _managedType.getProject()

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java?rev=773704&r1=773703&r2=773704&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java Mon May 11 21:59:15 2009
@@ -1996,6 +1996,9 @@
         return _val.getEmbeddedMetaData();
     }
 
+    public ClassMetaData addEmbeddedMetaData(int access) {
+        return _val.addEmbeddedMetaData(access);
+    }
     public ClassMetaData addEmbeddedMetaData() {
         return _val.addEmbeddedMetaData();
     }

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ValueMetaData.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ValueMetaData.java?rev=773704&r1=773703&r2=773704&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ValueMetaData.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ValueMetaData.java Mon May 11 21:59:15 2009
@@ -157,6 +157,11 @@
     public ClassMetaData addEmbeddedMetaData();
 
     /**
+     * Add embedded metadata for this value with the given access type
+     */
+    public ClassMetaData addEmbeddedMetaData(int access);
+    
+    /**
      * Cascade behavior for delete operation. Only applies to
      * persistence-capable values. Options are:<br />
      * <ul>

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ValueMetaDataImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ValueMetaDataImpl.java?rev=773704&r1=773703&r2=773704&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ValueMetaDataImpl.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ValueMetaDataImpl.java Mon May 11 21:59:15 2009
@@ -185,18 +185,22 @@
             addEmbeddedMetaData();
         return _embeddedMeta;
     }
-
-    public ClassMetaData addEmbeddedMetaData() {
+   
+    public ClassMetaData addEmbeddedMetaData(int access) {
         MetaDataRepository repos = _owner.getRepository();
         _embeddedMeta = repos.newEmbeddedClassMetaData(this);
         _embeddedMeta.setDescribedType(_decType);
         repos.getMetaDataFactory().getDefaults().populate(_embeddedMeta,
-            AccessCode.UNKNOWN);
+                access);
 
         setEmbedded(true);
         return _embeddedMeta;
     }
 
+    public ClassMetaData addEmbeddedMetaData() {
+        return addEmbeddedMetaData(AccessCode.UNKNOWN);
+    }
+
     public int getCascadeDelete() {
         if (_owner.getManagement() != FieldMetaData.MANAGE_PERSISTENT)
             return CASCADE_NONE;

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/AbstractMappedSuperField.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/AbstractMappedSuperField.java?rev=773704&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/AbstractMappedSuperField.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/AbstractMappedSuperField.java Mon May 11 21:59:15 2009
@@ -0,0 +1,70 @@
+/*
+ * 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.access;
+
+import java.util.Date;
+
+import javax.persistence.Access;
+import javax.persistence.Basic;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.MappedSuperclass;
+import javax.persistence.AccessType;
+
+@MappedSuperclass
+@Access(AccessType.FIELD)
+public abstract class AbstractMappedSuperField {
+
+    @Id
+    @GeneratedValue
+    private int id;
+    
+    @Basic
+    @Access(AccessType.FIELD)
+    private String name;
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+    
+    abstract public Date getCreateDate();
+    
+    abstract public void setCreateDate(Date date);    
+    
+    public boolean equals(Object obj) {
+        if (obj instanceof AbstractMappedSuperField) {
+            AbstractMappedSuperField ps = (AbstractMappedSuperField)obj;
+            return id == ps.getId() &&
+                   name.equals(ps.getName());
+        }
+        return false;
+    }
+}

Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/AbstractMappedSuperField.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/AbstractMappedSuperProperty.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/AbstractMappedSuperProperty.java?rev=773704&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/AbstractMappedSuperProperty.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/AbstractMappedSuperProperty.java Mon May 11 21:59:15 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.access;
+
+import java.util.Date;
+
+import javax.persistence.Access;
+import javax.persistence.Basic;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.MappedSuperclass;
+import javax.persistence.AccessType;
+import javax.persistence.Transient;
+
+@MappedSuperclass
+@Access(AccessType.PROPERTY)
+public abstract class AbstractMappedSuperProperty {
+
+    private int id;
+    
+    private String name;
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    @Id
+    @GeneratedValue
+    public int getId() {
+        return id;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Basic
+    @Access(AccessType.PROPERTY)
+    public String getName() {
+        return name;
+    }
+    
+    @Transient
+    abstract public Date getCreateDate();
+    
+    abstract public void setCreateDate(Date date);    
+    
+    public boolean equals(Object obj) {
+        if (obj instanceof AbstractMappedSuperProperty) {
+            AbstractMappedSuperProperty ps = (AbstractMappedSuperProperty)obj;
+            return getId() == ps.getId() &&
+                   getName().equals(ps.getName());
+        }
+        return false;
+    }
+}

Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/AbstractMappedSuperProperty.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/DefFieldMixedPropAccess.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/DefFieldMixedPropAccess.java?rev=773704&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/DefFieldMixedPropAccess.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/DefFieldMixedPropAccess.java Mon May 11 21:59:15 2009
@@ -0,0 +1,95 @@
+/*
+ * 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.access;
+
+import javax.persistence.Access;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Transient;
+import javax.persistence.Version;
+
+import static javax.persistence.AccessType.FIELD;
+import static javax.persistence.AccessType.PROPERTY;
+
+@Entity(name="DFMPA")
+@Access(value=FIELD)
+@NamedQueries( {
+    @NamedQuery(name="DFMPA.query", 
+        query="SELECT df FROM DFMPA df WHERE " + 
+        "df.id = :id AND df.stringField = :strVal"),
+    @NamedQuery(name="DFMPA.badQuery", 
+        query="SELECT p FROM DFMPA p WHERE " + 
+        "p.id = :id AND p.strField = :strVal") } )
+public class DefFieldMixedPropAccess {
+
+    @Id
+    @GeneratedValue
+    private int id;
+
+    @Version
+    private int version;
+    
+    @Transient
+    private String strField;
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setVersion(int version) {
+        this.version = version;
+    }
+
+    public int getVersion() {
+        return version;
+    }
+
+    public void setStringField(String val) {
+        this.setStrField(val);
+    }
+
+    @Access(value=PROPERTY)
+    public String getStringField() {
+        return getStrField();
+    }  
+    
+    public boolean equals(Object obj) {
+        if (obj instanceof DefFieldMixedPropAccess) {
+            DefFieldMixedPropAccess fa = (DefFieldMixedPropAccess)obj;
+            return id == fa.getId() &&
+              getStrField().equals(fa.getStringField());
+        }
+        return false;
+    }
+
+    public void setStrField(String strField) {
+        this.strField = strField;
+    }
+
+    public String getStrField() {
+        return strField;
+    }
+}

Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/DefFieldMixedPropAccess.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/DefPropMixedFieldAccess.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/DefPropMixedFieldAccess.java?rev=773704&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/DefPropMixedFieldAccess.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/DefPropMixedFieldAccess.java Mon May 11 21:59:15 2009
@@ -0,0 +1,87 @@
+/*
+ * 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.access;
+
+import javax.persistence.Access;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Transient;
+import javax.persistence.Version;
+
+import static javax.persistence.AccessType.FIELD;
+import static javax.persistence.AccessType.PROPERTY;
+
+@Entity(name="DPMFA")
+@Access(value=PROPERTY)
+@NamedQueries( {
+    @NamedQuery(name="DPMFA.query", 
+        query="SELECT p FROM DPMFA p WHERE " + 
+        "p.id = :id AND p.strField = :strVal"),
+    @NamedQuery(name="DPMFA.badQuery", 
+        query="SELECT p FROM DPMFA p WHERE " + 
+        "p.id = :id AND p.strProp = :strVal") } )        
+public class DefPropMixedFieldAccess {
+
+    private int id;
+
+    private int version;
+    
+    @Access(value=FIELD)
+    private String strField;
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    @Id
+    @GeneratedValue
+    public int getId() {
+        return id;
+    }
+
+    public void setVersion(int version) {
+        this.version = version;
+    }
+
+    @Version
+    public int getVersion() {
+        return version;
+    }
+
+    public void setStrProp(String var) {
+        this.strField = var;
+    }
+
+    @Transient
+    public String getStrProp() {
+        return strField;
+    }   
+    
+    public boolean equals(Object obj) {
+        if (obj instanceof DefPropMixedFieldAccess) {
+            DefPropMixedFieldAccess dpmfa = (DefPropMixedFieldAccess)obj;
+            return getId() == dpmfa.getId() &&
+                strField.equals(dpmfa.getStrProp());
+        }
+        return false;
+    }
+}

Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/DefPropMixedFieldAccess.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedFieldAccess.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedFieldAccess.java?rev=773704&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedFieldAccess.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedFieldAccess.java Mon May 11 21:59:15 2009
@@ -0,0 +1,56 @@
+/*
+ * 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.access;
+
+import javax.persistence.Access;
+import javax.persistence.AccessType;
+import javax.persistence.Embeddable;
+
+@Access(AccessType.FIELD)
+@Embeddable
+public class EmbedFieldAccess {
+
+    String fName;
+    String lName;
+
+    public String getFirstName() {
+        return fName;
+    }
+    
+    public void setFirstName(String fname) {
+        fName = fname;        
+    }
+    
+    public String getLastName() {
+        return lName;
+    }
+    
+    public void setLastName(String lname) {
+        lName = lname;
+    }  
+    
+    public boolean equals(Object obj) {
+        if (obj instanceof EmbedFieldAccess) {
+            EmbedFieldAccess ps = (EmbedFieldAccess)obj;
+            return getFirstName().equals(ps.getFirstName()) &&
+                getLastName().equals(ps.getLastName());
+        }
+        return false;
+    }
+}

Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedFieldAccess.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedId.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedId.java?rev=773704&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedId.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedId.java Mon May 11 21:59:15 2009
@@ -0,0 +1,60 @@
+/*
+ * 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.access;
+
+import javax.persistence.Access;
+import javax.persistence.AccessType;
+import javax.persistence.Embeddable;
+
+@Embeddable
+@Access(AccessType.FIELD)
+public class EmbedId {
+
+    private long id;
+    private String code;
+    
+    public long getId() {
+        return id;
+    }
+    
+    public void setId(long lid) {
+        id = lid;
+    }
+    
+    public String getCode() {
+        return code;
+    }
+    
+    public void setCode(String c) {
+        code = c;
+    }
+    
+    public int hashCode() {
+        return super.hashCode();
+    }
+    
+    public boolean equals(Object obj) {
+        if (obj instanceof EmbedId) {
+            EmbedId eid = (EmbedId)obj;
+            return getId() == eid.getId() &&
+                getCode().equals(eid.getCode());
+        }
+        return false;
+    }
+}

Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedId.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedInnerProp.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedInnerProp.java?rev=773704&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedInnerProp.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedInnerProp.java Mon May 11 21:59:15 2009
@@ -0,0 +1,60 @@
+/*
+ * 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.access;
+
+import javax.persistence.Access;
+import javax.persistence.AccessType;
+import javax.persistence.Embeddable;
+import javax.persistence.Embedded;
+
+@Access(AccessType.PROPERTY)
+@Embeddable
+public class EmbedInnerProp {
+
+    private String inName;
+    
+    private EmbedOuterField eof;
+    
+    public String getInnerName() {
+        return inName;
+    }
+    
+    public void setInnerName(String innerName) {
+        inName = innerName;
+    }
+    
+    @Embedded
+    public EmbedOuterField getOuterField() {
+        return eof;
+    }
+    
+    public void setOuterField(EmbedOuterField eo) {
+        eof = eo;
+    }
+    
+    public boolean equals(Object obj) {
+        if (obj instanceof EmbedInnerProp) {
+            EmbedInnerProp ps = (EmbedInnerProp)obj;
+            
+            return getInnerName().equals(ps.getInnerName()) &&
+                getOuterField().equals(ps.getOuterField());
+        }
+        return false;
+    }
+}

Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedInnerProp.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedMixedAccess.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedMixedAccess.java?rev=773704&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedMixedAccess.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedMixedAccess.java Mon May 11 21:59:15 2009
@@ -0,0 +1,71 @@
+/*
+ * 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.access;
+
+import javax.persistence.Access;
+import javax.persistence.AccessType;
+import javax.persistence.Embeddable;
+import javax.persistence.Transient;
+
+@Access(AccessType.PROPERTY)
+@Embeddable
+public class EmbedMixedAccess {
+    
+    private transient String fName;
+    private transient String lName;
+
+    @Access(AccessType.FIELD)
+    private String mName; 
+
+    public String getFirstName() {
+        return fName;
+    }
+    
+    public void setFirstName(String fname) {
+        fName = fname;        
+    }
+    
+    public String getLastName() {
+        return lName;
+    }
+    
+    public void setLastName(String lname) {
+        lName = lname;
+    }  
+
+    @Transient
+    public String getMiddleName() {
+        return mName;
+    }
+
+    public void setMiddleName(String mname) {
+        mName = mname;
+    }
+    
+    public boolean equals(Object obj) {
+        if (obj instanceof EmbedMixedAccess) {
+            EmbedMixedAccess ps = (EmbedMixedAccess)obj;
+            return getFirstName().equals(ps.getFirstName()) &&
+                getLastName().equals(ps.getLastName()) &&
+                getMiddleName().equals(ps.getMiddleName());
+        }
+        return false;
+    }
+
+}

Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedMixedAccess.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedOuterField.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedOuterField.java?rev=773704&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedOuterField.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedOuterField.java Mon May 11 21:59:15 2009
@@ -0,0 +1,46 @@
+/*
+ * 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.access;
+
+import javax.persistence.Access;
+import javax.persistence.AccessType;
+import javax.persistence.Embeddable;
+
+@Access(AccessType.FIELD)
+@Embeddable
+public class EmbedOuterField {
+
+    private String outName;
+        
+    public String getOuterName() {
+        return outName;
+    }
+    
+    public void setOuterName(String outerName) {
+        outName = outerName;
+    }
+    
+    public boolean equals(Object obj) {
+        if (obj instanceof EmbedOuterField) {
+            EmbedOuterField ps = (EmbedOuterField)obj;
+            return getOuterName().equals(ps.getOuterName());
+        }
+        return false;
+    }
+}

Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedOuterField.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedPropAccess.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedPropAccess.java?rev=773704&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedPropAccess.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedPropAccess.java Mon May 11 21:59:15 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.access;
+
+import javax.persistence.Access;
+import javax.persistence.AccessType;
+import javax.persistence.Embeddable;
+
+@Access(AccessType.PROPERTY)
+@Embeddable
+public class EmbedPropAccess {
+
+    String fName;
+    String lName;
+
+    public EmbedPropAccess() {        
+    }
+    
+    public EmbedPropAccess(String fn, String ln) {
+        setFirstName(fn);
+        setLastName(ln);
+    }
+    
+    public String getFirstName() {
+        return fName;
+    }
+    
+    public void setFirstName(String fname) {
+        fName = fname;        
+    }
+    
+    public String getLastName() {
+        return lName;
+    }
+    
+    public void setLastName(String lname) {
+        lName = lname;
+    }    
+    
+    public boolean equals(Object obj) {
+        if (obj instanceof EmbedPropAccess) {
+            EmbedPropAccess ps = (EmbedPropAccess)obj;
+            return getFirstName().equals(ps.getFirstName()) &&
+                getLastName().equals(ps.getLastName());
+        }
+        return false;
+    }
+}

Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/EmbedPropAccess.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldAccess.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldAccess.java?rev=773704&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldAccess.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldAccess.java Mon May 11 21:59:15 2009
@@ -0,0 +1,88 @@
+/*
+ * 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.access;
+
+import javax.persistence.Access;
+import javax.persistence.Basic;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.NamedQuery;
+import javax.persistence.Version;
+
+import static javax.persistence.AccessType.FIELD;
+
+@Entity
+@Access(value=FIELD)
+@NamedQuery(name="FieldAccess.query", 
+    query="SELECT fa FROM FieldAccess fa WHERE " + 
+        "fa.id = :id AND fa.strField = :strVal")
+public class FieldAccess {
+
+    @Id
+    @GeneratedValue
+    private int id;
+
+    @Version
+    private int version;
+    
+    @Basic
+    private String strField;
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setVersion(int version) {
+        this.version = version;
+    }
+
+    public int getVersion() {
+        return version;
+    }
+
+    public void setStringField(String val) {
+        this.setStrField(val);
+    }
+
+    public String getStringField() {
+        return getStrField();
+    }  
+    
+    public boolean equals(Object obj) {
+        if (obj instanceof FieldAccess) {
+            FieldAccess fa = (FieldAccess)obj;
+            return id == fa.getId() &&
+              getStrField().equals(fa.getStringField());
+        }
+        return false;
+    }
+
+    public void setStrField(String strField) {
+        this.strField = strField;
+    }
+
+    public String getStrField() {
+        return strField;
+    }
+}

Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldAccess.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldAccessPropStratsEntity.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldAccessPropStratsEntity.java?rev=773704&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldAccessPropStratsEntity.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldAccessPropStratsEntity.java Mon May 11 21:59:15 2009
@@ -0,0 +1,160 @@
+/*
+ * 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.access;
+
+import java.util.Collection;
+
+import javax.persistence.Access;
+import javax.persistence.Basic;
+import javax.persistence.CascadeType;
+import javax.persistence.ElementCollection;
+import javax.persistence.Embedded;
+import javax.persistence.EmbeddedId;
+import javax.persistence.Entity;
+import javax.persistence.AccessType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.ManyToMany;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
+import javax.persistence.Transient;
+import javax.persistence.Version;
+
+@Entity
+@Access(AccessType.FIELD)
+public class FieldAccessPropStratsEntity {
+
+    @EmbeddedId
+    private EmbedId eid;
+
+    @Transient
+    private String name;
+
+    @Transient
+    private PropAccess m2one;
+
+    @Transient
+    private Collection<FieldAccess> one2m;
+    
+    @Transient
+    private PropAccess one2one;
+    
+    @Transient
+    private Collection<EmbedPropAccess> ecoll;
+    
+    @Transient
+    private EmbedFieldAccess embed;
+    
+    @Transient
+    private int ver;
+    
+    @Transient
+    private Collection<PropAccess> m2m;
+
+    @ElementCollection
+    @Access(AccessType.PROPERTY)
+    public Collection<EmbedPropAccess> getElementCollection() {
+        return ecoll;
+    }
+
+    public void setElementCollection(Collection<EmbedPropAccess> coll) {
+        ecoll = coll;
+    }
+    
+    @Embedded
+    @Access(AccessType.PROPERTY)
+    public EmbedFieldAccess getEmbedField() {
+        return embed;
+    }
+    
+    public void setEmbedField(EmbedFieldAccess efa) {
+        embed = efa;
+    }
+    
+    @Version
+    @Access(AccessType.PROPERTY)
+    public int getVersion() {
+        return ver;
+    }
+    
+    public void setVersion(int version) {
+        ver = version;
+    }
+    
+    @ManyToOne(cascade=CascadeType.ALL)
+    @Access(AccessType.PROPERTY)
+    public PropAccess getManyToOne() {
+        return m2one;
+    }
+
+    public void setManyToOne(PropAccess pa) {
+        m2one = pa;
+    }
+
+    @OneToMany(cascade=CascadeType.ALL)
+    @Access(AccessType.PROPERTY)
+    public Collection<FieldAccess> getOneToMany() {
+        return one2m;
+    }
+
+    public void setOneToMany(Collection<FieldAccess> c) {
+        one2m = c;
+    }
+
+    @OneToOne(cascade=CascadeType.ALL)
+    @Access(AccessType.PROPERTY)
+    public PropAccess getOneToOne() {
+        return one2one;
+    }
+    
+    public void setOneToOne(PropAccess pa) {
+        one2one = pa;
+    }
+    
+    @ManyToMany(cascade=CascadeType.ALL)
+    @Access(AccessType.PROPERTY)
+    public Collection<PropAccess> getManyToMany() {
+        return m2m;
+    }
+
+    public void setManyToMany(Collection<PropAccess> many) {
+        m2m = many;
+    }
+    
+    @Basic
+    @Access(AccessType.PROPERTY)
+    public String getName() {
+        return name;
+    }
+    
+    public void setName(String n) {
+        name = n;
+    }
+
+    public void setEmbedId(EmbedId eid) {
+        this.eid = eid;
+    }
+
+    @EmbeddedId
+    @Access(AccessType.FIELD)
+    public EmbedId getEmbedId() {
+        return eid;
+    }
+}

Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldAccessPropStratsEntity.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldEmbedEntity.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldEmbedEntity.java?rev=773704&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldEmbedEntity.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldEmbedEntity.java Mon May 11 21:59:15 2009
@@ -0,0 +1,86 @@
+/*
+ * 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.access;
+
+import javax.persistence.Access;
+import javax.persistence.AccessType;
+import javax.persistence.Basic;
+import javax.persistence.Embedded;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+
+@Entity
+@Access(AccessType.FIELD)
+@NamedQueries( {
+    @NamedQuery(name="FieldEmbedEntity.query", 
+        query="SELECT fs FROM FieldEmbedEntity fs WHERE " + 
+        "fs.id = :id AND fs.name = :name AND fs.epa.firstName = :firstName " +
+        "AND fs.epa.lastName = :lastName"),
+    @NamedQuery(name="FieldEmbedEntity.badQuery", 
+        query="SELECT fs FROM FieldEmbedEntity fs WHERE " + 
+        "fs.id = :id AND fs.name = :name AND fs.epa.fName = :firstName " +
+        "AND fs.epa.lName = :lastName") } )
+public class FieldEmbedEntity {
+
+    @Id
+    @GeneratedValue
+    private int id;
+    
+    @Basic
+    private String name;
+
+    @Embedded
+    private EmbedPropAccess epa;
+    
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+    
+    public EmbedPropAccess getEPA() {
+        return epa;
+    }
+
+    public void setEPA(EmbedPropAccess ep) {
+        epa = ep;
+    }
+
+    public boolean equals(Object obj) {
+        if (obj instanceof FieldEmbedEntity) {
+            FieldEmbedEntity ps = (FieldEmbedEntity)obj;
+            return epa.equals(ps.getEPA()) && id == ps.getId() &&
+                   name.equals(ps.getName());
+        }
+        return false;
+    }
+}

Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldEmbedEntity.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldSub.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldSub.java?rev=773704&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldSub.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldSub.java Mon May 11 21:59:15 2009
@@ -0,0 +1,63 @@
+/*
+ * 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.access;
+
+import java.util.Date;
+
+import javax.persistence.Access;
+import javax.persistence.AccessType;
+import javax.persistence.Entity;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+
+@Entity
+@Access(AccessType.FIELD)
+@NamedQueries( {
+    @NamedQuery(name="FieldSub.query", 
+        query="SELECT fs FROM FieldSub fs WHERE " + 
+        "fs.id = :id AND fs.name = :name AND fs.crtDate = :crtDate"),
+    @NamedQuery(name="FieldSub.badQuery", 
+        query="SELECT fs FROM FieldSub fs WHERE " + 
+        "fs.id = :id AND fs.name = :name AND fs.createDate = :crtDate") } )
+public class FieldSub extends AbstractMappedSuperProperty {
+
+    @Temporal(TemporalType.TIMESTAMP)
+    private Date crtDate;
+    
+    @Override
+    public Date getCreateDate() {
+        return crtDate;
+    }
+
+    @Override
+    public void setCreateDate(Date date) {
+        crtDate = date;
+    }
+    
+    public boolean equals(Object obj) {
+        if (obj instanceof FieldSub) {
+            FieldSub ps = (FieldSub)obj;
+            return super.equals(obj) &&
+                   crtDate.equals(ps.getCreateDate());
+        }
+        return false;
+    }
+}

Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldSub.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldSub2.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldSub2.java?rev=773704&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldSub2.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldSub2.java Mon May 11 21:59:15 2009
@@ -0,0 +1,61 @@
+/*
+ * 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.access;
+
+import java.util.Date;
+
+import javax.persistence.Access;
+import javax.persistence.AccessType;
+import javax.persistence.Entity;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+
+@Entity
+@Access(AccessType.FIELD)
+@NamedQueries( {
+    @NamedQuery(name="FieldSub2.query", 
+        query="SELECT fs FROM FieldSub2 fs WHERE " + 
+        "fs.id = :id AND fs.name = :name AND fs.crtDate = :crtDate"),
+    @NamedQuery(name="FieldSub2.badQuery", 
+        query="SELECT ps FROM FieldSub2 ps WHERE " + 
+        "ps.id = :id AND ps.name = :name AND ps.createDate = :crtDate") } )
+public class FieldSub2 extends MappedSuperProperty {
+    
+    protected Date crtDate;
+
+    public Date getCreateDate() {
+        return crtDate;
+    }
+
+    public void setCreateDate(Date date) {
+        crtDate = date;
+    }
+    
+    public boolean equals(Object obj) {
+        if (obj instanceof FieldSub2) {
+            FieldSub2 ps = (FieldSub2)obj;
+            return super.equals(obj) &&
+                   crtDate.equals(ps.getCreateDate());
+        }
+        return false;
+    }
+    
+}

Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldSub2.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldSub3.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldSub3.java?rev=773704&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldSub3.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldSub3.java Mon May 11 21:59:15 2009
@@ -0,0 +1,63 @@
+/*
+ * 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.access;
+
+import java.util.Date;
+
+import javax.persistence.Access;
+import javax.persistence.AccessType;
+import javax.persistence.Entity;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import javax.persistence.Transient;
+
+@Entity
+@Access(AccessType.FIELD)
+@NamedQueries( {
+    @NamedQuery(name="FieldSub3.query", 
+        query="SELECT ps FROM FieldSub3 ps WHERE " + 
+        "ps.id = :id AND ps.name = :name AND ps.crtDate = :crtDate"),
+    @NamedQuery(name="FieldSub3.badQuery", 
+        query="SELECT ps FROM FieldSub3 ps WHERE " + 
+        "ps.id = :id AND ps.name = :name AND ps.createDate = :crtDate") } )
+public class FieldSub3 extends SuperPropertyEntity {
+    
+    @Temporal(TemporalType.TIMESTAMP)
+    protected Date crtDate;
+
+    public Date getCreateDate() {
+        return crtDate;
+    }
+
+    public void setCreateDate(Date date) {
+        crtDate = date;
+    }
+    
+    public boolean equals(Object obj) {
+        if (obj instanceof FieldSub3) {
+            FieldSub3 ps = (FieldSub3)obj;
+            return super.equals(obj) &&
+                   crtDate.equals(ps.getCreateDate());
+        }
+        return false;
+    }
+    
+}

Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/FieldSub3.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MappedSuperField.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MappedSuperField.java?rev=773704&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MappedSuperField.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MappedSuperField.java Mon May 11 21:59:15 2009
@@ -0,0 +1,70 @@
+/*
+ * 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.access;
+
+import java.util.Date;
+
+import javax.persistence.Access;
+import javax.persistence.AccessType;
+import javax.persistence.Basic;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.MappedSuperclass;
+import javax.persistence.Transient;
+
+@MappedSuperclass
+@Access(AccessType.FIELD)
+public class MappedSuperField {
+
+    @Id
+    @GeneratedValue
+    private int id;
+    
+    @Basic
+    @Access(AccessType.FIELD)
+    private String name;
+
+    @Transient
+    protected Date crtDate;
+    
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+        
+    public boolean equals(Object obj) {
+        if (obj instanceof MappedSuperField) {
+            MappedSuperField ps = (MappedSuperField)obj;
+            return id == ps.getId() &&
+                   name.equals(ps.getName());
+        }
+        return false;
+    }
+}

Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MappedSuperField.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MappedSuperProperty.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MappedSuperProperty.java?rev=773704&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MappedSuperProperty.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MappedSuperProperty.java Mon May 11 21:59:15 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.access;
+
+import javax.persistence.Access;
+import javax.persistence.AccessType;
+import javax.persistence.Basic;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.MappedSuperclass;
+
+@MappedSuperclass
+@Access(AccessType.PROPERTY)
+public class MappedSuperProperty {
+
+    private int id;
+    
+    private String name;
+    
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    @Id
+    @GeneratedValue
+    public int getId() {
+        return id;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Basic
+    @Access(AccessType.PROPERTY)
+    public String getName() {
+        return name;
+    }
+        
+    public boolean equals(Object obj) {
+        if (obj instanceof MappedSuperProperty) {
+            MappedSuperProperty ps = (MappedSuperProperty)obj;
+            return getId() == ps.getId() &&
+                   getName().equals(ps.getName());
+        }
+        return false;
+    }
+}

Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MappedSuperProperty.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MixedFieldSub.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MixedFieldSub.java?rev=773704&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MixedFieldSub.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MixedFieldSub.java Mon May 11 21:59:15 2009
@@ -0,0 +1,76 @@
+/*
+ * 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.access;
+
+import java.util.Date;
+
+import javax.persistence.Access;
+import javax.persistence.AccessType;
+import javax.persistence.Entity;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import javax.persistence.Transient;
+
+@Entity
+@Access(AccessType.FIELD)
+@NamedQueries( {
+    @NamedQuery(name="MixedFieldSub.query", 
+        query="SELECT fs FROM MixedFieldSub fs WHERE " + 
+        "fs.mid = :id AND fs.name = :name AND fs.createDate = :crtDate " +
+        "AND fs.myField = :myField"),
+    @NamedQuery(name="MixedFieldSub.badQuery", 
+        query="SELECT fs FROM MixedFieldSub fs WHERE " + 
+        "fs.mid = :id AND fs.name = :name AND fs.myFieldProp = :myField") } )
+public class MixedFieldSub extends MixedMappedSuper {
+
+    private String myField;
+    
+    @Transient
+    private Date crtDate;
+    
+    @Access(AccessType.PROPERTY)
+    @Temporal(TemporalType.TIMESTAMP)
+    public Date getCreateDate() {
+        return crtDate;
+    }
+
+    public void setCreateDate(Date date) {
+        crtDate = date;
+    }
+    
+    public boolean equals(Object obj) {
+        if (obj instanceof MixedFieldSub) {
+            MixedFieldSub ps = (MixedFieldSub)obj;
+            return super.equals(obj) &&
+                   getCreateDate().equals(ps.getCreateDate());
+        }
+        return false;
+    }
+
+    public void setMyFieldProp(String myField) {
+        this.myField = myField;
+    }
+
+    public String getMyFieldProp() {
+        return myField;
+    }
+
+}

Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MixedFieldSub.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MixedMappedSuper.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MixedMappedSuper.java?rev=773704&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MixedMappedSuper.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MixedMappedSuper.java Mon May 11 21:59:15 2009
@@ -0,0 +1,71 @@
+/*
+ * 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.access;
+
+import java.util.Date;
+
+import javax.persistence.Access;
+import javax.persistence.AccessType;
+import javax.persistence.Basic;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.MappedSuperclass;
+import javax.persistence.Transient;
+
+@MappedSuperclass
+@Access(AccessType.PROPERTY)
+public class MixedMappedSuper {
+
+    @Id
+    @GeneratedValue
+    @Access(AccessType.FIELD)
+    private int mid;
+    
+    private String mname;
+
+    protected Date crtDate;
+    
+    public void setId(int id) {
+        this.mid = id;
+    }
+
+    @Transient
+    public int getId() {
+        return mid;
+    }
+
+    public void setName(String name) {
+        this.mname = name;
+    }
+
+    @Basic
+    @Access(AccessType.PROPERTY)
+    public String getName() {
+        return mname;
+    }
+        
+    public boolean equals(Object obj) {
+        if (obj instanceof MixedMappedSuper) {
+            MixedMappedSuper ps = (MixedMappedSuper)obj;
+            return getId() == ps.getId() &&
+                   getName().equals(ps.getName());
+        }
+        return false;
+    }
+}

Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MixedMappedSuper.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MixedMultEmbedEntity.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MixedMultEmbedEntity.java?rev=773704&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MixedMultEmbedEntity.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MixedMultEmbedEntity.java Mon May 11 21:59:15 2009
@@ -0,0 +1,110 @@
+/*
+ * 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.access;
+
+import javax.persistence.Access;
+import javax.persistence.AccessType;
+import javax.persistence.Embedded;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Transient;
+
+@Entity
+@Access(AccessType.PROPERTY)
+@NamedQueries( {
+    @NamedQuery(name="MixedMultEmbedEntity.query", 
+        query="SELECT fs FROM MixedMultEmbedEntity fs WHERE " + 
+        "fs.mid = :id AND fs.name = :name AND " + 
+        "fs.embedProp.firstName = :firstName AND " +
+        "fs.embedProp.lastName = :lastName AND " +
+        "fs.embedField.fName = :fName AND " +
+        "fs.embedField.lName = :lName"),
+    @NamedQuery(name="MixedMultEmbedEntity.badQuery1", 
+        query="SELECT fs FROM MixedMultEmbedEntity fs WHERE " + 
+        "fs.mid = :id AND fs.name = :name AND " + 
+        "fs.epa = :epa"),
+    @NamedQuery(name="MixedMultEmbedEntity.badQuery2", 
+        query="SELECT fs FROM MixedMultEmbedEntity fs WHERE " + 
+        "fs.mid = :id AND fs.name = :name AND " + 
+        "fs.embedProp = :epa AND " +
+        "fs.embedField.firstName = :firstName AND " +
+        "fs.embedField.lName = :lastName") })
+public class MixedMultEmbedEntity {
+
+    @Id
+    @GeneratedValue
+    @Access(AccessType.FIELD)
+    private int mid;
+    
+    private String name;
+
+    private EmbedPropAccess epa;
+
+    private EmbedFieldAccess efa;
+
+    public void setId(int id) {
+        this.mid = id;
+    }
+
+    @Transient
+    public int getId() {
+        return mid;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+    
+    @Embedded
+    public EmbedPropAccess getEmbedProp() {
+        return epa;
+    }
+
+    public void setEmbedProp(EmbedPropAccess ep) {
+        epa = ep;
+    }
+
+    @Embedded
+    public EmbedFieldAccess getEmbedField() {
+        return efa;
+    }
+
+    public void setEmbedField(EmbedFieldAccess ef) {
+        efa = ef;
+    }
+
+    public boolean equals(Object obj) {
+        if (obj instanceof MixedMultEmbedEntity) {
+            MixedMultEmbedEntity ps = (MixedMultEmbedEntity)obj;
+            return getEmbedProp().equals(ps.getEmbedProp()) &&
+                getEmbedField().equals(ps.getEmbedField())
+                && getId() == ps.getId() &&
+                getName().equals(ps.getName());
+        }
+        return false;
+    }
+
+}

Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MixedMultEmbedEntity.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MixedNestedEmbedEntity.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MixedNestedEmbedEntity.java?rev=773704&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MixedNestedEmbedEntity.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MixedNestedEmbedEntity.java Mon May 11 21:59:15 2009
@@ -0,0 +1,90 @@
+/*
+ * 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.access;
+
+import javax.persistence.Access;
+import javax.persistence.AccessType;
+import javax.persistence.Embedded;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Transient;
+
+@Entity
+@Access(AccessType.FIELD)
+@NamedQueries( {
+    @NamedQuery(name="MixedNestedEmbedEntity.query", 
+        query="SELECT fs FROM MixedNestedEmbedEntity fs WHERE " + 
+        "fs.id = :id AND fs.name = :name AND " + 
+        "fs.eip.innerName = :innerName AND " +
+        "fs.eip.outerField.outName = :outerName"),
+    @NamedQuery(name="MixedNestedEmbedEntity.badQuery", 
+        query="SELECT fs FROM MixedNestedEmbedEntity fs WHERE " + 
+        "fs.id = :id AND fs.name = :name AND " + 
+        "fs.eip.innerName = :innerName AND " +
+        "fs.eip.outerField.outerName = :outerName") })
+public class MixedNestedEmbedEntity {
+
+    @Transient
+    private int mid;
+    
+    private String name;
+
+    @Embedded
+    private EmbedInnerProp eip;
+    
+    public void setId(int id) {
+        this.mid = id;
+    }
+
+    @Id
+    @GeneratedValue
+    @Access(AccessType.PROPERTY)
+    public int getId() {
+        return mid;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+    
+    public EmbedInnerProp getEmbedProp() {
+        return eip;
+    }
+
+    public void setEmbedProp(EmbedInnerProp ep) {
+        eip = ep;
+    }
+
+    public boolean equals(Object obj) {
+        if (obj instanceof MixedNestedEmbedEntity) {
+            MixedNestedEmbedEntity ps = (MixedNestedEmbedEntity)obj;
+            return getEmbedProp().equals(ps.getEmbedProp()) 
+                && getId() == ps.getId() &&
+                getName().equals(ps.getName());
+        }
+        return false;
+    }
+}

Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/MixedNestedEmbedEntity.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/PropAccess.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/PropAccess.java?rev=773704&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/PropAccess.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/PropAccess.java Mon May 11 21:59:15 2009
@@ -0,0 +1,78 @@
+/*
+ * 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.access;
+
+import javax.persistence.Access;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.NamedQuery;
+import javax.persistence.Version;
+
+import static javax.persistence.AccessType.PROPERTY;
+
+@Entity
+@Access(value=PROPERTY)
+@NamedQuery(name="PropertyAccess.query", 
+    query="SELECT pa FROM PropAccess pa WHERE " + 
+        "pa.id = :id AND pa.strProp = :strVal")
+public class PropAccess {
+
+    private int id;
+
+    private int version;
+    
+    private String strField;
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    @Id
+    @GeneratedValue
+    public int getId() {
+        return id;
+    }
+
+    public void setVersion(int version) {
+        this.version = version;
+    }
+
+    @Version
+    public int getVersion() {
+        return version;
+    }
+
+    public void setStrProp(String var) {
+        this.strField = var;
+    }
+
+    public String getStrProp() {
+        return strField;
+    } 
+    
+    public boolean equals(Object obj) {
+        if (obj instanceof PropAccess) {
+            PropAccess pa = (PropAccess)obj;
+            return getId() == pa.getId() &&
+                getStrProp().equals(pa.getStrProp());
+        }
+        return false;
+    }
+}

Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/access/PropAccess.java
------------------------------------------------------------------------------
    svn:eol-style = native