Buggy code:
@ Service public class LoanProductReadPlatformServiceImpl implements LoanProductReadPlatformService { private final PlatformSecurityContext context ; private final JdbcTemplate jdbcTemplate ; private final ChargeReadPlatformService chargeReadPlatformService ; private final MifosEntityAccessUtil mifosEntityAccessUtil ; private final CreditCheckReadPlatformService creditCheckReadPlatformService ; @ Autowired public LoanProductReadPlatformServiceImpl ( final PlatformSecurityContext context , final ChargeReadPlatformService chargeReadPlatformService , final RoutingDataSource dataSource , final MifosEntityAccessUtil mifosEntityAccessUtil , final CreditCheckReadPlatformService creditCheckReadPlatformService ) { } @ Override public LoanProductData retrieveLoanProduct ( final Long loanProductId ) { } @ Override public Collection < LoanProductBorrowerCycleVariationData > retrieveLoanProductBorrowerCycleVariations ( final Long loanProductId ) { } @ Override public Collection < LoanProductData > retrieveAllLoanProducts ( ) { } @ Override public Collection < LoanProductData > retrieveAllLoanProductsForLookup ( ) { } @ Override public Collection < LoanProductData > retrieveAllLoanProductsForLookup ( final boolean activeOnly ) { } @ Override public LoanProductData retrieveNewLoanProductDetails ( ) { } private static final class LoanProductMapper implements RowMapper < LoanProductData > { private final Collection < ChargeData > charges ; private final Collection < LoanProductBorrowerCycleVariationData > borrowerCycleVariationDatas ; private final Collection < CreditCheckData > creditChecks ; public LoanProductMapper ( final Collection < ChargeData > charges , final Collection < LoanProductBorrowerCycleVariationData > borrowerCycleVariationDatas , final Collection < CreditCheckData > creditChecks ) { } public String loanProductSchema ( ) { <START_BUG> return "lp.id<seq2seq4repair_space>as<seq2seq4repair_space>id,<seq2seq4repair_space>lp.fund_id<seq2seq4repair_space>as<seq2seq4repair_space>fundId,<seq2seq4repair_space>f.name<seq2seq4repair_space>as<seq2seq4repair_space>fundName,<seq2seq4repair_space>lp.loan_transaction_strategy_id<seq2seq4repair_space>as<seq2seq4repair_space>transactionStrategyId,<seq2seq4repair_space>ltps.name<seq2seq4repair_space>as<seq2seq4repair_space>transactionStrategyName,<seq2seq4repair_space>" + ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( "lp.name<seq2seq4repair_space>as<seq2seq4repair_space>name,<seq2seq4repair_space>lp.short_name<seq2seq4repair_space>as<seq2seq4repair_space>shortName,<seq2seq4repair_space>lp.description<seq2seq4repair_space>as<seq2seq4repair_space>description,<seq2seq4repair_space>" + "lp.principal_amount<seq2seq4repair_space>as<seq2seq4repair_space>principal,<seq2seq4repair_space>lp.min_principal_amount<seq2seq4repair_space>as<seq2seq4repair_space>minPrincipal,<seq2seq4repair_space>lp.max_principal_amount<seq2seq4repair_space>as<seq2seq4repair_space>maxPrincipal,<seq2seq4repair_space>lp.currency_code<seq2seq4repair_space>as<seq2seq4repair_space>currencyCode,<seq2seq4repair_space>lp.currency_digits<seq2seq4repair_space>as<seq2seq4repair_space>currencyDigits,<seq2seq4repair_space>lp.currency_multiplesof<seq2seq4repair_space>as<seq2seq4repair_space>inMultiplesOf,<seq2seq4repair_space>" ) + "lp.nominal_interest_rate_per_period<seq2seq4repair_space>as<seq2seq4repair_space>interestRatePerPeriod,<seq2seq4repair_space>lp.min_nominal_interest_rate_per_period<seq2seq4repair_space>as<seq2seq4repair_space>minInterestRatePerPeriod,<seq2seq4repair_space>lp.max_nominal_interest_rate_per_period<seq2seq4repair_space>as<seq2seq4repair_space>maxInterestRatePerPeriod,<seq2seq4repair_space>lp.interest_period_frequency_enum<seq2seq4repair_space>as<seq2seq4repair_space>interestRatePerPeriodFreq,<seq2seq4repair_space>" ) + "lp.annual_nominal_interest_rate<seq2seq4repair_space>as<seq2seq4repair_space>annualInterestRate,<seq2seq4repair_space>lp.interest_method_enum<seq2seq4repair_space>as<seq2seq4repair_space>interestMethod,<seq2seq4repair_space>lp.interest_calculated_in_period_enum<seq2seq4repair_space>as<seq2seq4repair_space>interestCalculationInPeriodMethod," ) + "lp.repay_every<seq2seq4repair_space>as<seq2seq4repair_space>repaidEvery,<seq2seq4repair_space>lp.repayment_period_frequency_enum<seq2seq4repair_space>as<seq2seq4repair_space>repaymentPeriodFrequency,<seq2seq4repair_space>lp.number_of_repayments<seq2seq4repair_space>as<seq2seq4repair_space>numberOfRepayments,<seq2seq4repair_space>lp.min_number_of_repayments<seq2seq4repair_space>as<seq2seq4repair_space>minNumberOfRepayments,<seq2seq4repair_space>lp.max_number_of_repayments<seq2seq4repair_space>as<seq2seq4repair_space>maxNumberOfRepayments,<seq2seq4repair_space>" ) + "lp.grace_on_principal_periods<seq2seq4repair_space>as<seq2seq4repair_space>graceOnPrincipalPayment,<seq2seq4repair_space>lp.grace_on_interest_periods<seq2seq4repair_space>as<seq2seq4repair_space>graceOnInterestPayment,<seq2seq4repair_space>lp.grace_interest_free_periods<seq2seq4repair_space>as<seq2seq4repair_space>graceOnInterestCharged,lp.grace_on_arrears_ageing<seq2seq4repair_space>as<seq2seq4repair_space>graceOnArrearsAgeing,lp.overdue_days_for_npa<seq2seq4repair_space>as<seq2seq4repair_space>overdueDaysForNPA,<seq2seq4repair_space>" ) + "lp.min_days_between_disbursal_and_first_repayment<seq2seq4repair_space>As<seq2seq4repair_space>minimumDaysBetweenDisbursalAndFirstRepayment,<seq2seq4repair_space>" ) + "lp.amortization_method_enum<seq2seq4repair_space>as<seq2seq4repair_space>amortizationMethod,<seq2seq4repair_space>lp.arrearstolerance_amount<seq2seq4repair_space>as<seq2seq4repair_space>tolerance,<seq2seq4repair_space>" ) + "lp.accounting_type<seq2seq4repair_space>as<seq2seq4repair_space>accountingType,<seq2seq4repair_space>lp.include_in_borrower_cycle<seq2seq4repair_space>as<seq2seq4repair_space>includeInBorrowerCycle,lp.use_borrower_cycle<seq2seq4repair_space>as<seq2seq4repair_space>useBorrowerCycle,<seq2seq4repair_space>lp.start_date<seq2seq4repair_space>as<seq2seq4repair_space>startDate,<seq2seq4repair_space>lp.close_date<seq2seq4repair_space>as<seq2seq4repair_space>closeDate,<seq2seq4repair_space>" ) + "lp.allow_multiple_disbursals<seq2seq4repair_space>as<seq2seq4repair_space>multiDisburseLoan,<seq2seq4repair_space>lp.max_disbursals<seq2seq4repair_space>as<seq2seq4repair_space>maxTrancheCount,<seq2seq4repair_space>lp.max_outstanding_loan_balance<seq2seq4repair_space>as<seq2seq4repair_space>outstandingLoanBalance,<seq2seq4repair_space>" ) + "lp.days_in_month_enum<seq2seq4repair_space>as<seq2seq4repair_space>daysInMonth,<seq2seq4repair_space>lp.days_in_year_enum<seq2seq4repair_space>as<seq2seq4repair_space>daysInYear,<seq2seq4repair_space>lp.interest_recalculation_enabled<seq2seq4repair_space>as<seq2seq4repair_space>isInterestRecalculationEnabled,<seq2seq4repair_space>" ) + "lpr.id<seq2seq4repair_space>as<seq2seq4repair_space>lprId,<seq2seq4repair_space>lpr.product_id<seq2seq4repair_space>as<seq2seq4repair_space>productId,<seq2seq4repair_space>lpr.compound_type_enum<seq2seq4repair_space>as<seq2seq4repair_space>compoundType,<seq2seq4repair_space>lpr.reschedule_strategy_enum<seq2seq4repair_space>as<seq2seq4repair_space>rescheduleStrategy,<seq2seq4repair_space>" ) + "lpr.rest_frequency_type_enum<seq2seq4repair_space>as<seq2seq4repair_space>restFrequencyEnum,<seq2seq4repair_space>lpr.rest_frequency_interval<seq2seq4repair_space>as<seq2seq4repair_space>restFrequencyInterval,<seq2seq4repair_space>" ) + "lpr.rest_freqency_date<seq2seq4repair_space>as<seq2seq4repair_space>restFrequencyDate,<seq2seq4repair_space>" ) + "lp.hold_guarantee_funds<seq2seq4repair_space>as<seq2seq4repair_space>holdGuaranteeFunds,<seq2seq4repair_space>" ) + "lpg.id<seq2seq4repair_space>as<seq2seq4repair_space>lpgId,<seq2seq4repair_space>lpg.mandatory_guarantee<seq2seq4repair_space>as<seq2seq4repair_space>mandatoryGuarantee,lpg.split_interest_to_guarantors<seq2seq4repair_space>as<seq2seq4repair_space>splitInterestAmongGuarantors,<seq2seq4repair_space>" ) + "lpg.minimum_guarantee_from_own_funds<seq2seq4repair_space>as<seq2seq4repair_space>minimumGuaranteeFromOwnFunds,<seq2seq4repair_space>lpg.minimum_guarantee_from_guarantor_funds<seq2seq4repair_space>as<seq2seq4repair_space>minimumGuaranteeFromGuarantor,<seq2seq4repair_space>" ) + "curr.name<seq2seq4repair_space>as<seq2seq4repair_space>currencyName,<seq2seq4repair_space>curr.internationalized_name_code<seq2seq4repair_space>as<seq2seq4repair_space>currencyNameCode,<seq2seq4repair_space>curr.display_symbol<seq2seq4repair_space>as<seq2seq4repair_space>currencyDisplaySymbol,<seq2seq4repair_space>lp.external_id<seq2seq4repair_space>as<seq2seq4repair_space>externalId,<seq2seq4repair_space>" ) + "lca.id<seq2seq4repair_space>as<seq2seq4repair_space>lcaId,<seq2seq4repair_space>lca.allow_attribute_configuration<seq2seq4repair_space>as<seq2seq4repair_space>allowAttributeConfiguration,<seq2seq4repair_space>lca.amortization<seq2seq4repair_space>as<seq2seq4repair_space>configureAmortization,<seq2seq4repair_space>lca.interest_method<seq2seq4repair_space>as<seq2seq4repair_space>configureInterestMethod,<seq2seq4repair_space>" ) + "lca.repayment_strategy<seq2seq4repair_space>as<seq2seq4repair_space>configureRepaymentStrategy,lca.interest_calculation_period<seq2seq4repair_space>as<seq2seq4repair_space>configureInterestCalcPeriod,<seq2seq4repair_space>lca.arrears_tolerance<seq2seq4repair_space>as<seq2seq4repair_space>configureArrearsTolerance,<seq2seq4repair_space>" ) + "lca.repay_every<seq2seq4repair_space>as<seq2seq4repair_space>configureRepaymentFrequency,<seq2seq4repair_space>lca.moratorium<seq2seq4repair_space>as<seq2seq4repair_space>configureMoratorium,<seq2seq4repair_space>lca.grace_on_arrears_aging<seq2seq4repair_space>as<seq2seq4repair_space>configureGraceOnArrearsAging<seq2seq4repair_space>" ) + "<seq2seq4repair_space>from<seq2seq4repair_space>m_product_loan<seq2seq4repair_space>lp<seq2seq4repair_space>" ) + "<seq2seq4repair_space>left<seq2seq4repair_space>join<seq2seq4repair_space>m_fund<seq2seq4repair_space>f<seq2seq4repair_space>on<seq2seq4repair_space>f.id<seq2seq4repair_space>=<seq2seq4repair_space>lp.fund_id<seq2seq4repair_space>" ) + "<seq2seq4repair_space>left<seq2seq4repair_space>join<seq2seq4repair_space>m_product_loan_recalculation_details<seq2seq4repair_space>lpr<seq2seq4repair_space>on<seq2seq4repair_space>lpr.product_id=lp.id<seq2seq4repair_space>" ) + "<seq2seq4repair_space>left<seq2seq4repair_space>join<seq2seq4repair_space>m_product_loan_guarantee_details<seq2seq4repair_space>lpg<seq2seq4repair_space>on<seq2seq4repair_space>lpg.loan_product_id=lp.id<seq2seq4repair_space>" ) + "<seq2seq4repair_space>left<seq2seq4repair_space>join<seq2seq4repair_space>ref_loan_transaction_processing_strategy<seq2seq4repair_space>ltps<seq2seq4repair_space>on<seq2seq4repair_space>ltps.id<seq2seq4repair_space>=<seq2seq4repair_space>lp.loan_transaction_strategy_id" ) + "<seq2seq4repair_space>left<seq2seq4repair_space>join<seq2seq4repair_space>m_product_loan_configurable_attributes<seq2seq4repair_space>lca<seq2seq4repair_space>on<seq2seq4repair_space>lca.loan_product_id<seq2seq4repair_space>=<seq2seq4repair_space>lp.id<seq2seq4repair_space>" ) + "<seq2seq4repair_space>join<seq2seq4repair_space>m_currency<seq2seq4repair_space>curr<seq2seq4repair_space>on<seq2seq4repair_space>curr.code<seq2seq4repair_space>=<seq2seq4repair_space>lp.currency_code" ) ; <END_BUG> } @ Override public LoanProductData mapRow ( final ResultSet rs , @ SuppressWarnings ( "unused" ) final int rowNum ) throws SQLException { } } private static final class LoanProductLookupMapper implements RowMapper < LoanProductData > { public String schema ( ) { } public String activeOnlySchema ( ) { } public String productMixSchema ( ) { } public String restrictedProductsSchema ( ) { } public String derivedRestrictedProductsSchema ( ) { } @ Override public LoanProductData mapRow ( final ResultSet rs , @ SuppressWarnings ( "unused" ) final int rowNum ) throws SQLException { } } private static final class LoanProductBorrowerCycleMapper implements RowMapper < LoanProductBorrowerCycleVariationData > { public String schema ( ) { } @ Override public LoanProductBorrowerCycleVariationData mapRow ( final ResultSet rs , @ SuppressWarnings ( "unused" ) final int rowNum ) throws SQLException { } } @ Override public Collection < LoanProductData > retrieveAllLoanProductsForCurrency ( String currencyCode ) { } @ Override public Collection < LoanProductData > retrieveAvailableLoanProductsForMix ( ) { } @ Override public Collection < LoanProductData > retrieveRestrictedProductsForMix ( final Long productId ) { } @ Override public Collection < LoanProductData > retrieveAllowedProductsForMix ( final Long productId ) { } No newline ; at end ; of file ; }

Fix:
return "lp.id<seq2seq4repair_space>as<seq2seq4repair_space>id,<seq2seq4repair_space>lp.fund_id<seq2seq4repair_space>as<seq2seq4repair_space>fundId,<seq2seq4repair_space>f.name<seq2seq4repair_space>as<seq2seq4repair_space>fundName,<seq2seq4repair_space>lp.loan_transaction_strategy_id<seq2seq4repair_space>as<seq2seq4repair_space>transactionStrategyId,<seq2seq4repair_space>ltps.name<seq2seq4repair_space>as<seq2seq4repair_space>transactionStrategyName,<seq2seq4repair_space>" + ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( "lp.name<seq2seq4repair_space>as<seq2seq4repair_space>name,<seq2seq4repair_space>lp.short_name<seq2seq4repair_space>as<seq2seq4repair_space>shortName,<seq2seq4repair_space>lp.description<seq2seq4repair_space>as<seq2seq4repair_space>description,<seq2seq4repair_space>" + "lp.principal_amount<seq2seq4repair_space>as<seq2seq4repair_space>principal,<seq2seq4repair_space>lp.min_principal_amount<seq2seq4repair_space>as<seq2seq4repair_space>minPrincipal,<seq2seq4repair_space>lp.max_principal_amount<seq2seq4repair_space>as<seq2seq4repair_space>maxPrincipal,<seq2seq4repair_space>lp.currency_code<seq2seq4repair_space>as<seq2seq4repair_space>currencyCode,<seq2seq4repair_space>lp.currency_digits<seq2seq4repair_space>as<seq2seq4repair_space>currencyDigits,<seq2seq4repair_space>lp.currency_multiplesof<seq2seq4repair_space>as<seq2seq4repair_space>inMultiplesOf,<seq2seq4repair_space>" ) + "lp.nominal_interest_rate_per_period<seq2seq4repair_space>as<seq2seq4repair_space>interestRatePerPeriod,<seq2seq4repair_space>lp.min_nominal_interest_rate_per_period<seq2seq4repair_space>as<seq2seq4repair_space>minInterestRatePerPeriod,<seq2seq4repair_space>lp.max_nominal_interest_rate_per_period<seq2seq4repair_space>as<seq2seq4repair_space>maxInterestRatePerPeriod,<seq2seq4repair_space>lp.interest_period_frequency_enum<seq2seq4repair_space>as<seq2seq4repair_space>interestRatePerPeriodFreq,<seq2seq4repair_space>" ) + "lp.annual_nominal_interest_rate<seq2seq4repair_space>as<seq2seq4repair_space>annualInterestRate,<seq2seq4repair_space>lp.interest_method_enum<seq2seq4repair_space>as<seq2seq4repair_space>interestMethod,<seq2seq4repair_space>lp.interest_calculated_in_period_enum<seq2seq4repair_space>as<seq2seq4repair_space>interestCalculationInPeriodMethod," ) + "lp.repay_every<seq2seq4repair_space>as<seq2seq4repair_space>repaidEvery,<seq2seq4repair_space>lp.repayment_period_frequency_enum<seq2seq4repair_space>as<seq2seq4repair_space>repaymentPeriodFrequency,<seq2seq4repair_space>lp.number_of_repayments<seq2seq4repair_space>as<seq2seq4repair_space>numberOfRepayments,<seq2seq4repair_space>lp.min_number_of_repayments<seq2seq4repair_space>as<seq2seq4repair_space>minNumberOfRepayments,<seq2seq4repair_space>lp.max_number_of_repayments<seq2seq4repair_space>as<seq2seq4repair_space>maxNumberOfRepayments,<seq2seq4repair_space>" ) + "lp.grace_on_principal_periods<seq2seq4repair_space>as<seq2seq4repair_space>graceOnPrincipalPayment,<seq2seq4repair_space>lp.grace_on_interest_periods<seq2seq4repair_space>as<seq2seq4repair_space>graceOnInterestPayment,<seq2seq4repair_space>lp.grace_interest_free_periods<seq2seq4repair_space>as<seq2seq4repair_space>graceOnInterestCharged,lp.grace_on_arrears_ageing<seq2seq4repair_space>as<seq2seq4repair_space>graceOnArrearsAgeing,lp.overdue_days_for_npa<seq2seq4repair_space>as<seq2seq4repair_space>overdueDaysForNPA,<seq2seq4repair_space>" ) + "lp.min_days_between_disbursal_and_first_repayment<seq2seq4repair_space>As<seq2seq4repair_space>minimumDaysBetweenDisbursalAndFirstRepayment,<seq2seq4repair_space>" ) + "lp.amortization_method_enum<seq2seq4repair_space>as<seq2seq4repair_space>amortizationMethod,<seq2seq4repair_space>lp.arrearstolerance_amount<seq2seq4repair_space>as<seq2seq4repair_space>tolerance,<seq2seq4repair_space>" ) + "lp.accounting_type<seq2seq4repair_space>as<seq2seq4repair_space>accountingType,<seq2seq4repair_space>lp.include_in_borrower_cycle<seq2seq4repair_space>as<seq2seq4repair_space>includeInBorrowerCycle,lp.use_borrower_cycle<seq2seq4repair_space>as<seq2seq4repair_space>useBorrowerCycle,<seq2seq4repair_space>lp.start_date<seq2seq4repair_space>as<seq2seq4repair_space>startDate,<seq2seq4repair_space>lp.close_date<seq2seq4repair_space>as<seq2seq4repair_space>closeDate,<seq2seq4repair_space>" ) + "lp.allow_multiple_disbursals<seq2seq4repair_space>as<seq2seq4repair_space>multiDisburseLoan,<seq2seq4repair_space>lp.max_disbursals<seq2seq4repair_space>as<seq2seq4repair_space>maxTrancheCount,<seq2seq4repair_space>lp.max_outstanding_loan_balance<seq2seq4repair_space>as<seq2seq4repair_space>outstandingLoanBalance,<seq2seq4repair_space>" ) + "lp.days_in_month_enum<seq2seq4repair_space>as<seq2seq4repair_space>daysInMonth,<seq2seq4repair_space>lp.days_in_year_enum<seq2seq4repair_space>as<seq2seq4repair_space>daysInYear,<seq2seq4repair_space>lp.interest_recalculation_enabled<seq2seq4repair_space>as<seq2seq4repair_space>isInterestRecalculationEnabled,<seq2seq4repair_space>" ) + "lpr.id<seq2seq4repair_space>as<seq2seq4repair_space>lprId,<seq2seq4repair_space>lpr.product_id<seq2seq4repair_space>as<seq2seq4repair_space>productId,<seq2seq4repair_space>lpr.compound_type_enum<seq2seq4repair_space>as<seq2seq4repair_space>compoundType,<seq2seq4repair_space>lpr.reschedule_strategy_enum<seq2seq4repair_space>as<seq2seq4repair_space>rescheduleStrategy,<seq2seq4repair_space>" ) + "lpr.rest_frequency_type_enum<seq2seq4repair_space>as<seq2seq4repair_space>restFrequencyEnum,<seq2seq4repair_space>lpr.rest_frequency_interval<seq2seq4repair_space>as<seq2seq4repair_space>restFrequencyInterval,<seq2seq4repair_space>" ) + "lpr.rest_freqency_date<seq2seq4repair_space>as<seq2seq4repair_space>restFrequencyDate,<seq2seq4repair_space>" ) + "lp.hold_guarantee_funds<seq2seq4repair_space>as<seq2seq4repair_space>holdGuaranteeFunds,<seq2seq4repair_space>" ) + "lpg.id<seq2seq4repair_space>as<seq2seq4repair_space>lpgId,<seq2seq4repair_space>lpg.mandatory_guarantee<seq2seq4repair_space>as<seq2seq4repair_space>mandatoryGuarantee,lpg.split_interest_among_guarantors<seq2seq4repair_space>as<seq2seq4repair_space>splitInterestAmongGuarantors,<seq2seq4repair_space>" ) + "lpg.minimum_guarantee_from_own_funds<seq2seq4repair_space>as<seq2seq4repair_space>minimumGuaranteeFromOwnFunds,<seq2seq4repair_space>lpg.minimum_guarantee_from_guarantor_funds<seq2seq4repair_space>as<seq2seq4repair_space>minimumGuaranteeFromGuarantor,<seq2seq4repair_space>" ) + "curr.name<seq2seq4repair_space>as<seq2seq4repair_space>currencyName,<seq2seq4repair_space>curr.internationalized_name_code<seq2seq4repair_space>as<seq2seq4repair_space>currencyNameCode,<seq2seq4repair_space>curr.display_symbol<seq2seq4repair_space>as<seq2seq4repair_space>currencyDisplaySymbol,<seq2seq4repair_space>lp.external_id<seq2seq4repair_space>as<seq2seq4repair_space>externalId,<seq2seq4repair_space>" ) + "lca.id<seq2seq4repair_space>as<seq2seq4repair_space>lcaId,<seq2seq4repair_space>lca.allow_attribute_configuration<seq2seq4repair_space>as<seq2seq4repair_space>allowAttributeConfiguration,<seq2seq4repair_space>lca.amortization<seq2seq4repair_space>as<seq2seq4repair_space>configureAmortization,<seq2seq4repair_space>lca.interest_method<seq2seq4repair_space>as<seq2seq4repair_space>configureInterestMethod,<seq2seq4repair_space>" ) + "lca.repayment_strategy<seq2seq4repair_space>as<seq2seq4repair_space>configureRepaymentStrategy,lca.interest_calculation_period<seq2seq4repair_space>as<seq2seq4repair_space>configureInterestCalcPeriod,<seq2seq4repair_space>lca.arrears_tolerance<seq2seq4repair_space>as<seq2seq4repair_space>configureArrearsTolerance,<seq2seq4repair_space>" ) + "lca.repay_every<seq2seq4repair_space>as<seq2seq4repair_space>configureRepaymentFrequency,<seq2seq4repair_space>lca.moratorium<seq2seq4repair_space>as<seq2seq4repair_space>configureMoratorium,<seq2seq4repair_space>lca.grace_on_arrears_aging<seq2seq4repair_space>as<seq2seq4repair_space>configureGraceOnArrearsAging<seq2seq4repair_space>" ) + "<seq2seq4repair_space>from<seq2seq4repair_space>m_product_loan<seq2seq4repair_space>lp<seq2seq4repair_space>" ) + "<seq2seq4repair_space>left<seq2seq4repair_space>join<seq2seq4repair_space>m_fund<seq2seq4repair_space>f<seq2seq4repair_space>on<seq2seq4repair_space>f.id<seq2seq4repair_space>=<seq2seq4repair_space>lp.fund_id<seq2seq4repair_space>" ) + "<seq2seq4repair_space>left<seq2seq4repair_space>join<seq2seq4repair_space>m_product_loan_recalculation_details<seq2seq4repair_space>lpr<seq2seq4repair_space>on<seq2seq4repair_space>lpr.product_id=lp.id<seq2seq4repair_space>" ) + "<seq2seq4repair_space>left<seq2seq4repair_space>join<seq2seq4repair_space>m_product_loan_guarantee_details<seq2seq4repair_space>lpg<seq2seq4repair_space>on<seq2seq4repair_space>lpg.loan_product_id=lp.id<seq2seq4repair_space>" ) + "<seq2seq4repair_space>left<seq2seq4repair_space>join<seq2seq4repair_space>ref_loan_transaction_processing_strategy<seq2seq4repair_space>ltps<seq2seq4repair_space>on<seq2seq4repair_space>ltps.id<seq2seq4repair_space>=<seq2seq4repair_space>lp.loan_transaction_strategy_id" ) + "<seq2seq4repair_space>left<seq2seq4repair_space>join<seq2seq4repair_space>m_product_loan_configurable_attributes<seq2seq4repair_space>lca<seq2seq4repair_space>on<seq2seq4repair_space>lca.loan_product_id<seq2seq4repair_space>=<seq2seq4repair_space>lp.id<seq2seq4repair_space>" ) + "<seq2seq4repair_space>join<seq2seq4repair_space>m_currency<seq2seq4repair_space>curr<seq2seq4repair_space>on<seq2seq4repair_space>curr.code<seq2seq4repair_space>=<seq2seq4repair_space>lp.currency_code" ) ;