增加查询可以获取父类属性的功能

This commit is contained in:
2020-11-02 00:02:56 +08:00
parent 112dd624dc
commit 227035fa78
2 changed files with 16 additions and 5 deletions

View File

@@ -28,7 +28,7 @@ interface IApplication {
} catch (ex: Exception) {
msg.status = Status.Error
msg.message = if (error.isEmpty()) ex.message ?: "" else "$error: ${ex.message}"
logger?.error(this, ex, "$error: ${ex.message}")
logger?.error(this, ex, "[$name]$error: ${ex.message}")
}
return msg
}
@@ -42,7 +42,7 @@ interface IApplication {
process(msg)
logger?.debug(this, "$name business execute success")
} catch (ex: Exception) {
logger?.error(this, ex, "$error。异常消息将抛出!: ${ex.message}")
logger?.error(this, ex, "[$name]$error。异常消息将抛出!: ${ex.message}")
throw RuntimeException(error, ex)
}
return msg

View File

@@ -27,7 +27,7 @@ open class MongoQuery(var template: MongoTemplate, var logger: ILogger? = null)
var validViewCollection = false
override fun <TView> list(params: Map<String, Any>?, clazz: Class<TView>): List<TView> {
val fields = clazz.fieldNames()
val fields = this.fields(clazz)
val query = Query()
query.where(params, clazz)
query.select(fields.toTypedArray())
@@ -41,7 +41,7 @@ open class MongoQuery(var template: MongoTemplate, var logger: ILogger? = null)
override fun <TView> paging(params: Params, clazz: Class<TView>): Page<TView> {
val query = Query()
val fields = clazz.fieldNames()
val fields = this.fields(clazz)
val result = Page<TView>(params.page, params.size)
result.total = this.count(params.parameters, clazz)
//如果总数和索引相同,说明该页没有数据,直接跳到上一页
@@ -61,12 +61,23 @@ open class MongoQuery(var template: MongoTemplate, var logger: ILogger? = null)
return this.template.findOne(whereId(id), clazz, this.collection(clazz))
}
fun <TView> fields(clazz: Class<TView>): List<String> {
val fields = mutableListOf<String>()
fields.addAll(clazz.fieldNames())
var parent = clazz.superclass
while (parent != Any::class.java) {
fields.addAll(clazz.superclass.fieldNames())
parent = parent.superclass
}
return fields
}
/**
* 获取collection
*/
fun <TView> collection(clazz: Class<TView>): String {
val table: Table? = clazz.getDeclaredAnnotation(
Table::class.java
Table::class.java
)
return if (table != null)
return table.name