diff options
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmEntity.java')
-rw-r--r-- | jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmEntity.java | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmEntity.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmEntity.java index 79c68fec83..b2e6e8401a 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmEntity.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmEntity.java @@ -764,6 +764,11 @@ public abstract class AbstractOrmEntity<X extends XmlEntity> } public void convertDefaultPrimaryKeyJoinColumnsToSpecified() { + // This is necessary for root entities which have no default PK join column + if (this.getPrimaryKeyJoinColumnsSize() == 0) { + this.addSpecifiedPrimaryKeyJoinColumn(); + } + for (PrimaryKeyJoinColumn defaultJoinColumn : this.getDefaultPrimaryKeyJoinColumns()) { String columnName = defaultJoinColumn.getName(); String referencedColumnName = defaultJoinColumn.getReferencedColumnName(); @@ -868,7 +873,7 @@ public abstract class AbstractOrmEntity<X extends XmlEntity> if (this.javaPrimaryKeyJoinColumnsWillBeDefaults()) { // specified => java this.initializeVirtualPrimaryKeyJoinColumns(); - } else { + } else if (this.getParentEntity() != null) { // specified => default this.addDefaultPrimaryKeyJoinColumn(); } @@ -1673,9 +1678,7 @@ public abstract class AbstractOrmEntity<X extends XmlEntity> secondaryTable.validate(messages, reporter); } this.validateInheritance(messages, reporter); - for (OrmSpecifiedPrimaryKeyJoinColumn pkJoinColumn : this.getSpecifiedPrimaryKeyJoinColumns()) { - pkJoinColumn.validate(messages, reporter); - } + this.validatePrimaryKeyJoinColumns(messages, reporter); this.attributeOverrideContainer.validate(messages, reporter); this.associationOverrideContainer.validate(messages, reporter); this.generatorContainer.validate(messages, reporter); @@ -1684,6 +1687,25 @@ public abstract class AbstractOrmEntity<X extends XmlEntity> this.idClassReference.validate(messages, reporter); } + protected void validatePrimaryKeyJoinColumns(List<IMessage> messages, IReporter reporter) { + if (this.getPrimaryKeyJoinColumnsSize() > 0) { + if (this.getParentEntity() == null) { + messages.add( + this.buildValidationMessage( + this.getNameTextRange(), + JptJpaCoreValidationMessages.ROOT_ENTITY_HAS_PK_JOIN_COLUMN_DEFINED, + this.getPersistentType().getName() + ) + ); + } else { + for (OrmSpecifiedPrimaryKeyJoinColumn pkJoinColumn : this.getSpecifiedPrimaryKeyJoinColumns()) { + pkJoinColumn.validate(messages, reporter); + } + } + } + + } + protected void validateEntityName(List<IMessage> messages) { if (StringTools.isBlank(this.getName())){ messages.add( |