@@ -97,8 +97,9 @@ internal class MetadataParser(resolver: Resolver, environment: SymbolProcessorEn
9797
9898 _logger .info(" [ktorm-ksp-compiler] parse table metadata from entity: $className " )
9999 val table = cls.getAnnotationsByType(Table ::class ).first()
100- val (superClass, superTableClasses) = parseSuperTableClass(cls)
101- val allPropertyNamesOfSuperTables = superTableClasses.flatMap { it.getProperties(emptySet()) }.map { it.simpleName.asString() }
100+
101+ val (finalSuperClass, allSuperTableClasses) = parseSuperTableClass(cls)
102+ val shouldIgnorePropertyNames = allSuperTableClasses.flatMap { it.getProperties(emptySet()) }.map { it.simpleName.asString() }
102103
103104 val tableMetadata = TableMetadata (
104105 entityClass = cls,
@@ -108,9 +109,9 @@ internal class MetadataParser(resolver: Resolver, environment: SymbolProcessorEn
108109 schema = table.schema.ifEmpty { _options [" ktorm.schema" ] }?.takeIf { it.isNotEmpty() },
109110 tableClassName = table.className.ifEmpty { _codingNamingStrategy .getTableClassName(cls) },
110111 entitySequenceName = table.entitySequenceName.ifEmpty { _codingNamingStrategy .getEntitySequenceName(cls) },
111- ignoreProperties = table.ignoreProperties.toSet() + allPropertyNamesOfSuperTables, // ignore properties of super tables
112+ ignoreProperties = table.ignoreProperties.toSet() + shouldIgnorePropertyNames,
112113 columns = ArrayList (),
113- superClass = superClass
114+ superClass = finalSuperClass
114115 )
115116
116117 val columns = tableMetadata.columns as MutableList
@@ -283,14 +284,14 @@ internal class MetadataParser(resolver: Resolver, environment: SymbolProcessorEn
283284 }
284285
285286 /* *
286- * @return the super table class and all class be annotated with [SuperTableClass] in the inheritance hierarchy.
287+ * @return the final super table class and all super table classes in the inheritance hierarchy.
287288 */
288289 @OptIn(KotlinPoetKspPreview ::class )
289290 private fun parseSuperTableClass (cls : KSClassDeclaration ): Pair <ClassName , Set <KSClassDeclaration >> {
290- val superTableClassAnnPair = cls.findAllAnnotationsInInheritanceHierarchy (SuperTableClass ::class .qualifiedName!! )
291+ val entityAnnPairs = cls.findAnnotationsInHierarchy (SuperTableClass ::class .qualifiedName!! )
291292
292293 // if there is no SuperTableClass annotation, return the default super table class based on the class kind.
293- if (superTableClassAnnPair .isEmpty()) {
294+ if (entityAnnPairs .isEmpty()) {
294295 return if (cls.classKind == INTERFACE ) {
295296 org.ktorm.schema.Table ::class .asClassName() to emptySet()
296297 } else {
@@ -299,13 +300,13 @@ internal class MetadataParser(resolver: Resolver, environment: SymbolProcessorEn
299300 }
300301
301302 // SuperTableClass annotation can only be used on interface
302- if (superTableClassAnnPair .map { it.first }.any { it.classKind != INTERFACE }) {
303+ if (entityAnnPairs .map { it.first }.any { it.classKind != INTERFACE }) {
303304 val msg = " SuperTableClass annotation can only be used on interface."
304305 throw IllegalArgumentException (msg)
305306 }
306307
307308 // find the last annotation in the inheritance hierarchy
308- val superTableClasses = superTableClassAnnPair
309+ val superTableClasses = entityAnnPairs
309310 .map { it.second }
310311 .map { it.arguments.single { it.name?.asString() == SuperTableClass ::value.name } }
311312 .map { it.value as KSType }
0 commit comments