/** Introspects the Inheritance */ void introspectInheritance( AmberPersistenceUnit persistenceUnit, EntityType entityType, Class type, Inheritance inheritanceAnn, InheritanceConfig inheritanceConfig) throws ConfigException, SQLException { InheritanceType strategy; if (inheritanceAnn != null) strategy = inheritanceAnn.strategy(); else strategy = inheritanceConfig.getStrategy(); switch (strategy) { case JOINED: entityType.setJoinedSubClass(true); break; } getInternalDiscriminatorColumnConfig(type, _annotationCfg); DiscriminatorColumn discriminatorAnn = (DiscriminatorColumn) _annotationCfg.getAnnotation(); DiscriminatorColumnConfig discriminatorConfig = _annotationCfg.getDiscriminatorColumnConfig(); String columnName = null; if (discriminatorAnn != null) columnName = discriminatorAnn.name(); if (columnName == null || columnName.equals("")) columnName = "DTYPE"; AmberType columnType = null; DiscriminatorType discType = DiscriminatorType.STRING; if (discriminatorAnn != null) discType = discriminatorAnn.discriminatorType(); switch (discType) { case STRING: columnType = StringType.create(); break; case CHAR: columnType = PrimitiveCharType.create(); break; case INTEGER: columnType = PrimitiveIntType.create(); break; default: throw new IllegalStateException(); } AmberTable table = entityType.getTable(); // jpa/0gg0 if (table == null) return; com.caucho.amber.table.AmberColumn column = table.createColumn(columnName, columnType); if (discriminatorAnn != null) { // column.setNotNull(! discriminatorAnn.nullable()); column.setLength(discriminatorAnn.length()); if (!"".equals(discriminatorAnn.columnDefinition())) column.setSQLType(discriminatorAnn.columnDefinition()); } else { column.setNotNull(true); column.setLength(10); } entityType.setDiscriminator(column); }