andrewoma
interface NaturalKey<T: Any> { val naturalKey: Set<Column<T, *>> } fun <T: Any, ID : Any, DAO: AbstractDao<T, ID>> DAO.findOrStore(value: T): T where DAO : NaturalKey<T> { if (id(value) == defaultId) { return findByExample(value, naturalKey).singleOrNull() ?: insert(value, defaultIdStrategy) } return value }
A modern programming language that makes developers happier.