@Override
    public int compareTo(@Nonnull final OneTimeTokenAccount tokenAccount) {
        return Comparator
            .comparing((OneTimeTokenAccount account) -> account.getScratchCodes().toArray(),
                Comparator.comparing(Arrays::toString))
            .thenComparingInt(OneTimeTokenAccount::getValidationCode)
            .thenComparing(OneTimeTokenAccount::getSecretKey)
            .thenComparing(OneTimeTokenAccount::getUsername)
            .thenComparing(OneTimeTokenAccount::getName)
            .thenComparing(acct -> Objects.requireNonNullElse(acct.getLastUsedDateTime(), StringUtils.EMPTY))
            .thenComparing(acct -> StringUtils.defaultString(acct.getSource()))
            .thenComparing(acct -> StringUtils.defaultString(acct.getTenant()))
            .compare(this, tokenAccount);
    }
Table name used to hold otp properties.
core/cas-server-core-authentication-api/src/main/java/org/apereo/cas/authentication/OneTimeTokenAccount.java