diff options
author | kmoore | 2009-08-24 22:32:23 +0000 |
---|---|---|
committer | kmoore | 2009-08-24 22:32:23 +0000 |
commit | 38d186d271cdd4e96920ed9a114450a4fcc75458 (patch) | |
tree | 019a43a2aa504a81a056810d775ee957cb016fec /jpa | |
parent | 154fdedeec36b3811abb9da5eff5b1a1947a4380 (diff) | |
download | webtools.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')
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(); |