Skip to main content
summaryrefslogtreecommitdiffstats
path: root/jpa
diff options
context:
space:
mode:
authorkmoore2009-08-24 22:32:23 +0000
committerkmoore2009-08-24 22:32:23 +0000
commit38d186d271cdd4e96920ed9a114450a4fcc75458 (patch)
tree019a43a2aa504a81a056810d775ee957cb016fec /jpa
parent154fdedeec36b3811abb9da5eff5b1a1947a4380 (diff)
downloadwebtools.dali-38d186d271cdd4e96920ed9a114450a4fcc75458.tar.gz
webtools.dali-38d186d271cdd4e96920ed9a114450a4fcc75458.tar.xz
webtools.dali-38d186d271cdd4e96920ed9a114450a4fcc75458.zip
282893 - subclasses ignore column mapping on inherited attribute in MappedSuperclass in orm.xml
Diffstat (limited to 'jpa')
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmBaseEmbeddedMapping.java2
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmEntity.java2
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlAttributeOverrideColumn.java75
-rw-r--r--jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/orm/OrmEntityTests.java24
4 files changed, 101 insertions, 2 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmBaseEmbeddedMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmBaseEmbeddedMapping.java
index 60f35b59a3..987fa24edc 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmBaseEmbeddedMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmBaseEmbeddedMapping.java
@@ -275,7 +275,7 @@ public abstract class AbstractOrmBaseEmbeddedMapping<T extends BaseXmlEmbedded>
XmlColumn xmlColumn;
if (javaAttributeOverride == null || !isDefault()) {
ColumnMapping columnMapping = (ColumnMapping) persistentAttribute.getMapping();
- xmlColumn = new VirtualXmlColumn(getTypeMapping(), columnMapping.getColumn());
+ xmlColumn = new VirtualXmlAttributeOverrideColumn(columnMapping.getColumn());
}
else {
xmlColumn = new VirtualXmlColumn(getTypeMapping(), javaAttributeOverride.getColumn());
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmEntity.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmEntity.java
index 118fb97f78..44b4be9d75 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmEntity.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/AbstractOrmEntity.java
@@ -1631,7 +1631,7 @@ public abstract class AbstractOrmEntity
XmlColumn xmlColumn;
if (javaAttributeOverride == null) {
ColumnMapping columnMapping = (ColumnMapping) persistentAttribute.getMapping();
- xmlColumn = new VirtualXmlColumn(this, columnMapping.getColumn());
+ xmlColumn = new VirtualXmlAttributeOverrideColumn(columnMapping.getColumn());
}
else {
xmlColumn = new VirtualXmlColumn(this, javaAttributeOverride.getColumn());
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlAttributeOverrideColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlAttributeOverrideColumn.java
new file mode 100644
index 0000000000..d1383f2d92
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/VirtualXmlAttributeOverrideColumn.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.context.orm;
+
+import org.eclipse.jpt.core.context.Column;
+
+/**
+ * javax.persistence.Column
+ */
+public class VirtualXmlAttributeOverrideColumn
+ extends VirtualXmlColumn
+{
+
+ public VirtualXmlAttributeOverrideColumn(Column column) {
+ super(null, column);
+ }
+
+ @Override
+ public String getName() {
+ return this.column.getSpecifiedName();
+ }
+
+ @Override
+ public String getColumnDefinition() {
+ return this.column.getColumnDefinition();
+ }
+
+ @Override
+ public String getTable() {
+ return this.column.getSpecifiedTable();
+ }
+
+ @Override
+ public Boolean getInsertable() {
+ return this.column.getSpecifiedInsertable();
+ }
+
+ @Override
+ public Boolean getUpdatable() {
+ return this.column.getSpecifiedUpdatable();
+ }
+
+ @Override
+ public Boolean getNullable() {
+ return this.column.getSpecifiedNullable();
+ }
+
+ @Override
+ public Boolean getUnique() {
+ return this.column.getSpecifiedUnique();
+ }
+
+ @Override
+ public Integer getLength() {
+ return this.column.getSpecifiedLength();
+ }
+
+ @Override
+ public Integer getScale() {
+ return this.column.getSpecifiedScale();
+ }
+
+ @Override
+ public Integer getPrecision() {
+ return this.column.getSpecifiedPrecision();
+ }
+
+}
diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/orm/OrmEntityTests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/orm/OrmEntityTests.java
index 5133cdd502..7e464697ab 100644
--- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/orm/OrmEntityTests.java
+++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/context/orm/OrmEntityTests.java
@@ -16,6 +16,7 @@ import org.eclipse.jpt.core.JptCorePlugin;
import org.eclipse.jpt.core.MappingKeys;
import org.eclipse.jpt.core.context.AccessType;
import org.eclipse.jpt.core.context.AttributeOverride;
+import org.eclipse.jpt.core.context.BasicMapping;
import org.eclipse.jpt.core.context.DiscriminatorType;
import org.eclipse.jpt.core.context.Entity;
import org.eclipse.jpt.core.context.InheritanceType;
@@ -1710,6 +1711,29 @@ public class OrmEntityTests extends ContextModelTestCase
assertEquals("BAR", attributeOverride.getColumn().getDefaultTable());
}
+ public void testAttributeOverrideColumnDefaultsNoJavaAnnotations() throws Exception {
+ createTestType();
+ createTestSubTypeUnmapped();
+ OrmPersistentType persistentType = getEntityMappings().addPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, FULLY_QUALIFIED_CHILD_TYPE_NAME);
+ getEntityMappings().addPersistentType(MappingKeys.MAPPED_SUPERCLASS_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME);
+
+ OrmEntity entity = (OrmEntity) persistentType.getMapping();
+ OrmAttributeOverride attributeOverride = entity.virtualAttributeOverrides().next();
+ ((OrmPersistentAttribute) persistentType.getParentPersistentType().getAttributeNamed("id")).makeSpecified();
+ BasicMapping basicMapping = (BasicMapping) persistentType.getParentPersistentType().getAttributeNamed("id").getSpecifiedMapping();
+ basicMapping.getColumn().setSpecifiedName("MY_COLUMN");
+ basicMapping.getColumn().setSpecifiedTable("BAR");
+
+ assertEquals("MY_COLUMN", attributeOverride.getColumn().getDefaultName());
+ assertEquals("BAR", attributeOverride.getColumn().getDefaultTable());
+
+
+ getEntityMappings().getPersistenceUnitMetadata().setXmlMappingMetadataComplete(true);
+ attributeOverride = entity.virtualAttributeOverrides().next();
+ assertEquals("MY_COLUMN", attributeOverride.getColumn().getName());
+ assertEquals("BAR", attributeOverride.getColumn().getTable());
+ }
+
public void testOverridableAttributes() throws Exception {
createTestEntityDefaultFieldAccess();

Back to the top