/* * ******************************************************************************************************************** * * iFHS7. * ;BBMBMBMc rZMBMBR BMB * MBEr:;PBM, 7MBMMEOBB: BBB RBW * XK: BO SB. :SZ MBM. c;; ir BBM :FFr :SSF: ;xBMB:r iuGXv. i:. iF2; * DBBM0r. :D S7 ;XMBMB GMBMu. MBM: BMB MBMBBBMBMS WMBMBMBBK MBMBMBM BMBRBMBW .MBMBMBMBB * :JMRMMD .. , 1MMRM1; ;MBMBBR: MBM ;MB: BMB: MBM. RMBr sBMH BM0 UMB, BMB. KMBv * ;. XOW B1; :uM: 1RE, i .2BMBs rMB. MBO MBO JMB; MBB MBM BBS 7MBMBOBM: MBW :BMc * OBRJ.SEE MRDOWOR, 3DE:7OBM . ;BMB RMR7BM BMB MBB. BMB ,BMR .BBZ MMB rMB, BMM rMB7 * :FBRO0D0 RKXSXPR. JOKOOMPi BMBSSWBMB; BMBB: MBMB0ZMBMS .BMBOXRBMB MBMDE RBM2;SMBM; MBB xBM2 * iZGE O0SHSPO. uGZ7. sBMBMBDL :BMO OZu:BMBK, rRBMB0; ,EBMB xBMBr:ER. RDU :OO; * ,BZ, 1D0 RPSFHXR. xWZ .SMr . .BBB * :0BMRDG RESSSKR. 2WOMBW; BMBMR * i0BM: SWKHKGO MBDv * .UB OOGDM. MK, Copyright (c) 2015-2019. 斯伯坦机器人 * , XMW .. * r All rights reserved. * * ******************************************************************************************************************** */ package com.persagy.database.extensions import com.persagy.base.extensions.getAllDeclaredFields import com.persagy.database.SFilter import javax.persistence.Id /** * 取得主键字段值 * * @return Id字段值 */ fun Any.keyValue(property: String = "id"): Any? { /** 依次取id列表中的键值 */ javaClass.keyFieldList().forEach { if (it.name == property) { val accessible = it.isAccessible //canAccess(this) it.isAccessible = true val id = it.get(this) it.isAccessible = accessible return id } } return null } // Fun Serializable.keyValue() /** * 取得主键与值的映射 * * @return 主键映射。key为属性名 */ fun Any.keyMap(): HashMap { val map = HashMap() val clz = this::class.java for (field in clz.getAllDeclaredFields()) { // val anno = field.getAnnotation(Column::class.java) if (field.getAnnotation(Id::class.java) != null) { val accessible = field.isAccessible //canAccess(this) field.isAccessible = true map[field.name] = field.get(this) field.isAccessible = accessible } } return map } // Fun Serializable.keyMap() /** * 获得主键的过滤条件 * * @return 主键的过滤条件 */ fun Any.filterListByKeys(): ArrayList { val filterList = ArrayList() this.keyMap().forEach { filterList.add(SFilter.eq(it.key, it.value)) } return filterList } // Fun Serializable.filterListByKeys()