You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by ad...@apache.org on 2024/06/13 18:29:28 UTC
(fineract) branch develop updated: FINERACT-2091: Support for string type primary keys
This is an automated email from the ASF dual-hosted git repository.
adamsaghy pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git
The following commit(s) were added to refs/heads/develop by this push:
new f48f94c45 FINERACT-2091: Support for string type primary keys
f48f94c45 is described below
commit f48f94c454f71b2fd12c0ac50ebb93bc3db81c0e
Author: Marta Jankovics <ma...@gmail.com>
AuthorDate: Sat Jun 8 22:35:35 2024 +0200
FINERACT-2091: Support for string type primary keys
---
.../domain/FinancialActivityAccount.java | 2 +-
.../accounting/glaccount/domain/TrialBalance.java | 2 +-
.../journalentry/domain/JournalEntry.java | 2 +-
.../domain/ProductToGLAccountMapping.java | 3 +-
.../accounting/rule/domain/AccountingRule.java | 2 +-
.../accounting/rule/domain/AccountingTagRule.java | 2 +-
.../organisation/teller/domain/Cashier.java | 2 +-
.../teller/domain/CashierTransaction.java | 2 +-
.../organisation/teller/domain/Teller.java | 2 +-
.../teller/domain/TellerTransaction.java | 2 +-
.../fineract/portfolio/charge/domain/Charge.java | 2 +-
.../accounting/glaccount/domain/GLAccount.java | 2 +-
.../org/apache/fineract/cob/COBBusinessStep.java | 2 +-
.../fineract/commands/domain/CommandSource.java | 2 +-
.../businessdate/domain/BusinessDate.java | 2 +-
.../infrastructure/cache/domain/PlatformCache.java | 2 +-
.../fineract/infrastructure/codes/domain/Code.java | 2 +-
.../infrastructure/codes/domain/CodeValue.java | 2 +-
.../core/domain/AbstractAuditableCustom.java | 2 +-
.../AbstractAuditableWithUTCDateTimeCustom.java | 5 ++-
.../core/domain/AbstractPersistableCustom.java | 4 +-
.../documentmanagement/domain/Image.java | 2 +-
.../external/repository/domain/ExternalEvent.java | 2 +-
.../organisation/holiday/domain/Holiday.java | 2 +-
.../monetary/domain/ApplicationCurrency.java | 2 +-
.../monetary/domain/OrganisationCurrency.java | 2 +-
.../organisation/office/domain/Office.java | 2 +-
.../fineract/organisation/staff/domain/Staff.java | 2 +-
.../workingdays/domain/WorkingDays.java | 2 +-
.../portfolio/calendar/domain/Calendar.java | 2 +-
.../portfolio/calendar/domain/CalendarHistory.java | 2 +-
.../calendar/domain/CalendarInstance.java | 2 +-
.../fineract/portfolio/client/domain/Client.java | 13 +------
.../portfolio/client/domain/ClientIdentifier.java | 2 +-
.../delinquency/domain/DelinquencyBucket.java | 2 +-
.../delinquency/domain/DelinquencyRange.java | 2 +-
.../fineract/portfolio/fund/domain/Fund.java | 2 +-
.../fineract/portfolio/group/domain/Group.java | 2 +-
.../portfolio/group/domain/GroupLevel.java | 2 +-
.../fineract/portfolio/group/domain/GroupRole.java | 2 +-
.../paymentdetail/domain/PaymentDetail.java | 15 +++-----
.../portfolio/paymenttype/domain/PaymentType.java | 2 +-
.../useradministration/domain/AppUser.java | 2 +-
.../domain/AppUserClientMapping.java | 2 +-
.../useradministration/domain/Permission.java | 2 +-
.../fineract/useradministration/domain/Role.java | 2 +-
.../documentmanagement/domain/Document.java | 2 +-
.../investor/domain/ExternalAssetOwner.java | 2 +-
.../ExternalAssetOwnerJournalEntryMapping.java | 2 +-
.../domain/ExternalAssetOwnerTransfer.java | 2 +-
.../domain/ExternalAssetOwnerTransferDetails.java | 2 +-
...ernalAssetOwnerTransferJournalEntryMapping.java | 2 +-
.../ExternalAssetOwnerTransferLoanMapping.java | 2 +-
.../collateral/domain/LoanCollateral.java | 2 +-
.../domain/ClientCollateralManagement.java | 2 +-
.../domain/CollateralManagementDomain.java | 2 +-
.../domain/DelinquencyBucketMappings.java | 2 +-
.../delinquency/domain/LoanDelinquencyAction.java | 2 +-
.../domain/LoanDelinquencyTagHistory.java | 2 +-
.../domain/LoanInstallmentDelinquencyTag.java | 2 +-
.../GroupLoanIndividualMonitoringAccount.java | 2 +-
.../portfolio/loanaccount/domain/Loan.java | 2 +-
.../portfolio/loanaccount/domain/LoanCharge.java | 2 +-
.../loanaccount/domain/LoanChargePaidBy.java | 2 +-
.../domain/LoanCollateralManagement.java | 2 +-
.../domain/LoanCreditAllocationRule.java | 2 +-
.../domain/LoanDisbursementDetails.java | 2 +-
.../loanaccount/domain/LoanInstallmentCharge.java | 2 +-
...LoanInterestRecalcualtionAdditionalDetails.java | 2 +-
.../domain/LoanInterestRecalculationDetails.java | 2 +-
.../domain/LoanOverdueInstallmentCharge.java | 2 +-
.../domain/LoanPaymentAllocationRule.java | 2 +-
.../domain/LoanRepaymentScheduleInstallment.java | 2 +-
...oanRescheduleRequestToTermVariationMapping.java | 2 +-
.../domain/LoanStatusChangeHistory.java | 2 +-
.../loanaccount/domain/LoanTermVariations.java | 2 +-
.../loanaccount/domain/LoanTopupDetails.java | 2 +-
.../loanaccount/domain/LoanTrancheCharge.java | 2 +-
.../domain/LoanTrancheDisbursementCharge.java | 2 +-
.../loanaccount/domain/LoanTransaction.java | 2 +-
.../domain/LoanTransactionRelation.java | 2 +-
.../LoanTransactionToRepaymentScheduleMapping.java | 2 +-
.../domain/reaging/LoanReAgeParameter.java | 2 +-
.../domain/LoanRepaymentScheduleHistory.java | 2 +-
.../domain/LoanRescheduleRequest.java | 2 +-
.../portfolio/loanproduct/domain/LoanProduct.java | 2 +-
.../domain/LoanProductBorrowerCycleVariations.java | 2 +-
.../domain/LoanProductConfigurableAttributes.java | 2 +-
.../domain/LoanProductCreditAllocationRule.java | 2 +-
.../domain/LoanProductFloatingRates.java | 2 +-
.../domain/LoanProductGuaranteeDetails.java | 2 +-
.../LoanProductInterestRecalculationDetails.java | 2 +-
.../domain/LoanProductPaymentAllocationRule.java | 2 +-
.../LoanProductVariableInstallmentConfig.java | 2 +-
.../domain/PostDatedChecks.java | 2 +-
...cedPaymentScheduleTransactionProcessorTest.java | 1 +
.../domain/LoanProductProvisioningEntry.java | 2 +-
.../provisioning/domain/ProvisioningEntry.java | 2 +-
.../fineract/cob/COBBusinessStepService.java | 4 +-
.../fineract/cob/COBBusinessStepServiceImpl.java | 4 +-
.../fineract/cob/domain/BatchBusinessStep.java | 2 +-
.../fineract/cob/service/LoanReloadService.java | 2 +-
.../apache/fineract/cob/service/ReloadService.java | 4 +-
.../fineract/cob/service/ReloaderService.java | 2 +-
.../domain/AccountNumberFormat.java | 2 +-
.../bulkimport/domain/ImportDocument.java | 2 +-
.../campaigns/email/domain/EmailCampaign.java | 2 +-
.../campaigns/email/domain/EmailConfiguration.java | 2 +-
.../campaigns/email/domain/EmailMessage.java | 2 +-
.../campaigns/sms/domain/SmsCampaign.java | 2 +-
.../configuration/domain/ExternalService.java | 2 +-
.../domain/GlobalConfigurationProperty.java | 2 +-
.../creditbureau/domain/CreditBureau.java | 2 +-
.../domain/CreditBureauConfiguration.java | 2 +-
.../domain/CreditBureauLoanProductMapping.java | 2 +-
.../creditbureau/domain/CreditBureauToken.java | 2 +-
.../creditbureau/domain/CreditReport.java | 2 +-
.../domain/OrganisationCreditBureau.java | 2 +-
.../dataqueries/domain/EntityDatatableChecks.java | 2 +-
.../dataqueries/domain/RegisteredDatatable.java | 3 +-
.../infrastructure/dataqueries/domain/Report.java | 2 +-
.../dataqueries/domain/ReportParameter.java | 2 +-
.../dataqueries/domain/ReportParameterUsage.java | 2 +-
.../entityaccess/domain/FineractEntityAccess.java | 2 +-
.../domain/FineractEntityRelation.java | 2 +-
.../domain/FineractEntityToEntityMapping.java | 2 +-
.../gcm/domain/DeviceRegistration.java | 2 +-
.../hooks/domain/HookConfiguration.java | 2 +-
.../infrastructure/hooks/domain/HookResource.java | 2 +-
.../infrastructure/hooks/domain/HookTemplate.java | 2 +-
.../infrastructure/hooks/domain/Schema.java | 2 +-
.../jobs/domain/CustomJobParameter.java | 2 +-
.../infrastructure/jobs/domain/JobParameter.java | 2 +-
.../jobs/domain/ScheduledJobDetail.java | 2 +-
.../jobs/domain/ScheduledJobRunHistory.java | 2 +-
.../jobs/domain/SchedulerDetail.java | 2 +-
.../domain/ReportMailingJobConfiguration.java | 2 +-
.../domain/ReportMailingJobRunHistory.java | 2 +-
.../security/domain/TFAccessToken.java | 2 +-
.../security/domain/TwoFactorConfiguration.java | 2 +-
.../infrastructure/sms/domain/SmsMessage.java | 2 +-
.../infrastructure/survey/domain/Likelihood.java | 2 +-
.../fineract/mix/domain/MixTaxonomyMapping.java | 2 +-
.../fineract/notification/domain/Notification.java | 2 +-
.../notification/domain/NotificationMapper.java | 2 +-
.../office/domain/OfficeTransaction.java | 2 +-
.../domain/LoanProductProvisionCriteria.java | 2 +-
.../provisioning/domain/ProvisioningCategory.java | 2 +-
.../domain/ProvisioningCriteriaDefinition.java | 2 +-
.../account/domain/AccountAssociations.java | 2 +-
.../account/domain/AccountTransferDetails.java | 2 +-
.../domain/AccountTransferStandingInstruction.java | 2 +-
.../account/domain/AccountTransferTransaction.java | 2 +-
.../fineract/portfolio/address/domain/Address.java | 2 +-
.../address/domain/FieldConfiguration.java | 2 +-
.../portfolio/client/domain/ClientAddress.java | 2 +-
.../portfolio/client/domain/ClientCharge.java | 2 +-
.../client/domain/ClientChargePaidBy.java | 2 +-
.../client/domain/ClientFamilyMembers.java | 2 +-
.../portfolio/client/domain/ClientNonPerson.java | 2 +-
.../portfolio/client/domain/ClientTransaction.java | 2 +-
.../client/domain/ClientTransferDetails.java | 2 +-
.../loanaccount/guarantor/domain/Guarantor.java | 2 +-
.../guarantor/domain/GuarantorFundingDetails.java | 2 +-
.../domain/GuarantorFundingTransaction.java | 2 +-
.../loanproduct/productmix/domain/ProductMix.java | 2 +-
.../attendance/domain/ClientAttendance.java | 2 +-
.../fineract/portfolio/meeting/domain/Meeting.java | 2 +-
.../fineract/portfolio/note/domain/Note.java | 2 +-
.../domain/DepositAccountRecurringDetail.java | 2 +-
.../RecurringDepositScheduleInstallment.java | 2 +-
.../self/account/domain/SelfBeneficiariesTPT.java | 2 +-
.../portfolio/self/pockets/domain/Pocket.java | 2 +-
.../self/pockets/domain/PocketAccountMapping.java | 2 +-
.../domain/SelfServiceRegistration.java | 2 +-
.../shareaccounts/domain/ShareAccount.java | 2 +-
.../shareaccounts/domain/ShareAccountCharge.java | 2 +-
.../domain/ShareAccountChargePaidBy.java | 2 +-
.../domain/ShareAccountDividendDetails.java | 2 +-
.../domain/ShareAccountTransaction.java | 2 +-
.../domain/ShareProductMarketPrice.java | 2 +-
.../org/apache/fineract/spm/domain/Component.java | 2 +-
.../apache/fineract/spm/domain/LookupTable.java | 2 +-
.../org/apache/fineract/spm/domain/Question.java | 2 +-
.../org/apache/fineract/spm/domain/Response.java | 2 +-
.../org/apache/fineract/spm/domain/Scorecard.java | 2 +-
.../org/apache/fineract/spm/domain/Survey.java | 2 +-
.../apache/fineract/template/domain/Template.java | 2 +-
.../fineract/template/domain/TemplateMapper.java | 2 +-
.../domain/AppUserPreviousPassword.java | 2 +-
.../domain/PasswordValidationPolicy.java | 2 +-
.../SynchronousCommandProcessingServiceTest.java | 2 +
.../core/auditing/CustomAuditingHandlerTest.java | 4 +-
...cyWritePlatformServiceRangeChangeEventTest.java | 5 ++-
.../floatingrates/domain/FloatingRate.java | 2 +-
.../floatingrates/domain/FloatingRatePeriod.java | 2 +-
.../interoperation/domain/InteropIdentifier.java | 2 +-
.../domain/InterestIncentives.java | 2 +-
.../domain/InterestRateChart.java | 2 +-
.../domain/InterestRateChartSlab.java | 2 +-
.../domain/DepositAccountInterestIncentive.java | 2 +-
.../domain/DepositAccountInterestIncentives.java | 2 +-
.../domain/DepositAccountInterestRateChart.java | 2 +-
.../DepositAccountInterestRateChartSlabs.java | 2 +-
.../domain/DepositAccountOnHoldTransaction.java | 2 +-
.../domain/DepositAccountTermAndPreClosure.java | 2 +-
.../domain/DepositProductRecurringDetail.java | 2 +-
.../domain/DepositProductTermAndPreClosure.java | 2 +-
.../domain/GroupSavingsIndividualMonitoring.java | 2 +-
.../portfolio/savings/domain/SavingsAccount.java | 45 +++++++---------------
.../savings/domain/SavingsAccountCharge.java | 2 +-
.../savings/domain/SavingsAccountChargePaidBy.java | 2 +-
.../savings/domain/SavingsAccountTransaction.java | 2 +-
.../SavingsAccountTransactionTaxDetails.java | 2 +-
.../domain/SavingsOfficerAssignmentHistory.java | 2 +-
.../portfolio/savings/domain/SavingsProduct.java | 2 +-
216 files changed, 243 insertions(+), 273 deletions(-)
diff --git a/fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/domain/FinancialActivityAccount.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/domain/FinancialActivityAccount.java
index fb92bab1d..b08d9fd6b 100644
--- a/fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/domain/FinancialActivityAccount.java
+++ b/fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/domain/FinancialActivityAccount.java
@@ -36,7 +36,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
@Getter
-public class FinancialActivityAccount extends AbstractPersistableCustom {
+public class FinancialActivityAccount extends AbstractPersistableCustom<Long> {
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "gl_account_id")
diff --git a/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalance.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalance.java
index 757d37774..41836a3ac 100644
--- a/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalance.java
+++ b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalance.java
@@ -38,7 +38,7 @@ import org.apache.fineract.infrastructure.core.service.DateUtils;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class TrialBalance extends AbstractPersistableCustom {
+public class TrialBalance extends AbstractPersistableCustom<Long> {
@Column(name = "office_id", nullable = false)
private Long officeId;
diff --git a/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntry.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntry.java
index 35d56be85..1c2c18715 100644
--- a/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntry.java
+++ b/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntry.java
@@ -37,7 +37,7 @@ import org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail;
@Entity
@Getter
@Table(name = "acc_gl_journal_entry")
-public class JournalEntry extends AbstractAuditableWithUTCDateTimeCustom {
+public class JournalEntry extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne
@JoinColumn(name = "office_id", nullable = false)
diff --git a/fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/domain/ProductToGLAccountMapping.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/domain/ProductToGLAccountMapping.java
index cee097e2e..8dd35f891 100644
--- a/fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/domain/ProductToGLAccountMapping.java
+++ b/fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/domain/ProductToGLAccountMapping.java
@@ -40,7 +40,7 @@ import org.apache.fineract.portfolio.paymenttype.domain.PaymentType;
@Entity
@Table(name = "acc_product_mapping", uniqueConstraints = { @UniqueConstraint(columnNames = { "product_id", "product_type",
"financial_account_type", "payment_type" }, name = "financial_action") })
-public class ProductToGLAccountMapping extends AbstractPersistableCustom {
+public class ProductToGLAccountMapping extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = true)
@JoinColumn(name = "gl_account_id")
@@ -69,5 +69,4 @@ public class ProductToGLAccountMapping extends AbstractPersistableCustom {
return new ProductToGLAccountMapping().setGlAccount(glAccount).setProductId(productId).setProductType(productType)
.setFinancialAccountType(financialAccountType);
}
-
}
diff --git a/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingRule.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingRule.java
index d820260bc..88127c622 100644
--- a/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingRule.java
+++ b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingRule.java
@@ -52,7 +52,7 @@ import org.apache.fineract.organisation.office.domain.Office;
@Entity
@Table(name = "acc_accounting_rule", uniqueConstraints = {
@UniqueConstraint(columnNames = { "name" }, name = "accounting_rule_name_unique") })
-public class AccountingRule extends AbstractPersistableCustom {
+public class AccountingRule extends AbstractPersistableCustom<Long> {
@Column(name = "name", nullable = false, length = 500)
private String name;
diff --git a/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingTagRule.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingTagRule.java
index df08570c6..7952c337c 100644
--- a/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingTagRule.java
+++ b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingTagRule.java
@@ -38,7 +38,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "acc_rule_tags", uniqueConstraints = {
@UniqueConstraint(columnNames = { "acc_rule_id", "tag_id", "acc_type_enum" }, name = "UNIQUE_ACCOUNT_RULE_TAGS") })
-public class AccountingTagRule extends AbstractPersistableCustom {
+public class AccountingTagRule extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "acc_rule_id", nullable = false)
diff --git a/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/Cashier.java b/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/Cashier.java
index bc0ce7a3a..32759ab79 100644
--- a/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/Cashier.java
+++ b/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/Cashier.java
@@ -56,7 +56,7 @@ import org.apache.fineract.organisation.staff.domain.Staff;
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
-public class Cashier extends AbstractPersistableCustom {
+public class Cashier extends AbstractPersistableCustom<Long> {
// ManyToOne(fetch = FetchType.LAZY)
// JoinColumn(name = "office_id", nullable = false)
diff --git a/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/CashierTransaction.java b/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/CashierTransaction.java
index 9034d5d5c..098a1c683 100644
--- a/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/CashierTransaction.java
+++ b/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/CashierTransaction.java
@@ -47,7 +47,7 @@ import org.apache.fineract.organisation.office.domain.Office;
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
-public class CashierTransaction extends AbstractPersistableCustom {
+public class CashierTransaction extends AbstractPersistableCustom<Long> {
@Transient
private Office office;
diff --git a/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/Teller.java b/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/Teller.java
index f5241370b..91e22d10e 100644
--- a/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/Teller.java
+++ b/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/Teller.java
@@ -47,7 +47,7 @@ import org.apache.fineract.organisation.office.domain.Office;
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
-public class Teller extends AbstractPersistableCustom {
+public class Teller extends AbstractPersistableCustom<Long> {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "office_id", nullable = false)
diff --git a/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/TellerTransaction.java b/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/TellerTransaction.java
index 2c840c515..fbccb706a 100644
--- a/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/TellerTransaction.java
+++ b/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/TellerTransaction.java
@@ -41,7 +41,7 @@ import org.apache.fineract.portfolio.client.domain.Client;
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
-public class TellerTransaction extends AbstractPersistableCustom {
+public class TellerTransaction extends AbstractPersistableCustom<Long> {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "office_id", nullable = false)
diff --git a/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/Charge.java b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/Charge.java
index 24b2e1978..86e330243 100644
--- a/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/Charge.java
+++ b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/Charge.java
@@ -57,7 +57,7 @@ import org.apache.fineract.portfolio.tax.domain.TaxGroup;
@Entity
@Table(name = "m_charge", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "name") })
-public class Charge extends AbstractPersistableCustom {
+public class Charge extends AbstractPersistableCustom<Long> {
@Column(name = "name", length = 100)
private String name;
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/domain/GLAccount.java b/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/domain/GLAccount.java
index 0884ac168..0107fe296 100644
--- a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/domain/GLAccount.java
+++ b/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/domain/GLAccount.java
@@ -45,7 +45,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class GLAccount extends AbstractPersistableCustom {
+public class GLAccount extends AbstractPersistableCustom<Long> {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "parent_id")
diff --git a/fineract-core/src/main/java/org/apache/fineract/cob/COBBusinessStep.java b/fineract-core/src/main/java/org/apache/fineract/cob/COBBusinessStep.java
index 44d8629b7..2d0cea7d4 100644
--- a/fineract-core/src/main/java/org/apache/fineract/cob/COBBusinessStep.java
+++ b/fineract-core/src/main/java/org/apache/fineract/cob/COBBusinessStep.java
@@ -20,7 +20,7 @@ package org.apache.fineract.cob;
import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
-public interface COBBusinessStep<T extends AbstractPersistableCustom> {
+public interface COBBusinessStep<T extends AbstractPersistableCustom<Long>> {
T execute(T input);
diff --git a/fineract-core/src/main/java/org/apache/fineract/commands/domain/CommandSource.java b/fineract-core/src/main/java/org/apache/fineract/commands/domain/CommandSource.java
index a035daeda..2fadde646 100644
--- a/fineract-core/src/main/java/org/apache/fineract/commands/domain/CommandSource.java
+++ b/fineract-core/src/main/java/org/apache/fineract/commands/domain/CommandSource.java
@@ -33,7 +33,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
@Entity
@Table(name = "m_portfolio_command_source")
-public class CommandSource extends AbstractPersistableCustom {
+public class CommandSource extends AbstractPersistableCustom<Long> {
@Column(name = "action_name", nullable = true, length = 100)
private String actionName;
diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/businessdate/domain/BusinessDate.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/businessdate/domain/BusinessDate.java
index 7fd6a9e27..e7bec9312 100644
--- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/businessdate/domain/BusinessDate.java
+++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/businessdate/domain/BusinessDate.java
@@ -39,7 +39,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
@Accessors(chain = true)
@Entity
@Table(name = "m_business_date", uniqueConstraints = { @UniqueConstraint(name = "uq_business_date_type", columnNames = { "type" }) })
-public class BusinessDate extends AbstractAuditableWithUTCDateTimeCustom {
+public class BusinessDate extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@Enumerated(EnumType.STRING)
@Column(name = "type")
diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/cache/domain/PlatformCache.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/cache/domain/PlatformCache.java
index af57933ab..1b434c80d 100644
--- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/cache/domain/PlatformCache.java
+++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/cache/domain/PlatformCache.java
@@ -33,7 +33,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class PlatformCache extends AbstractPersistableCustom {
+public class PlatformCache extends AbstractPersistableCustom<Long> {
@Column(name = "cache_type_enum")
private Integer cacheType;
diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/codes/domain/Code.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/codes/domain/Code.java
index 877b28661..f84f39600 100644
--- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/codes/domain/Code.java
+++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/codes/domain/Code.java
@@ -43,7 +43,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class Code extends AbstractPersistableCustom {
+public class Code extends AbstractPersistableCustom<Long> {
@Column(name = "code_name", length = 100)
private String name;
diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/codes/domain/CodeValue.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/codes/domain/CodeValue.java
index 1d29991ce..025268e5c 100644
--- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/codes/domain/CodeValue.java
+++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/codes/domain/CodeValue.java
@@ -43,7 +43,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class CodeValue extends AbstractPersistableCustom {
+public class CodeValue extends AbstractPersistableCustom<Long> {
@Column(name = "code_value", length = 100)
private String label;
diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java
index e733975eb..9f9bfa23d 100644
--- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java
+++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java
@@ -39,7 +39,7 @@ import org.springframework.data.jpa.domain.AbstractAuditable;
* the type of the auditing type's identifier
*/
@MappedSuperclass
-public abstract class AbstractAuditableCustom extends AbstractPersistableCustom implements Auditable<Long, Long, LocalDateTime> {
+public abstract class AbstractAuditableCustom extends AbstractPersistableCustom<Long> implements Auditable<Long, Long, LocalDateTime> {
private static final long serialVersionUID = 141481953116476081L;
diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableWithUTCDateTimeCustom.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableWithUTCDateTimeCustom.java
index 55beda888..802608512 100644
--- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableWithUTCDateTimeCustom.java
+++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableWithUTCDateTimeCustom.java
@@ -26,6 +26,7 @@ import static org.apache.fineract.infrastructure.core.domain.AuditableFieldsCons
import jakarta.persistence.Column;
import jakarta.persistence.MappedSuperclass;
import jakarta.validation.constraints.NotNull;
+import java.io.Serializable;
import java.time.OffsetDateTime;
import java.util.Optional;
import lombok.AccessLevel;
@@ -47,8 +48,8 @@ import org.springframework.data.jpa.domain.AbstractAuditable;
@Getter
@Setter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
-public abstract class AbstractAuditableWithUTCDateTimeCustom extends AbstractPersistableCustom
- implements Auditable<Long, Long, OffsetDateTime> {
+public abstract class AbstractAuditableWithUTCDateTimeCustom<T extends Serializable> extends AbstractPersistableCustom<T>
+ implements Auditable<Long, T, OffsetDateTime> {
private static final long serialVersionUID = 141481953116476081L;
diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java
index c961c078b..7c0813fdc 100644
--- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java
+++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java
@@ -48,14 +48,14 @@ import org.springframework.data.domain.Persistable;
@Getter
@Setter
@NoArgsConstructor
-public abstract class AbstractPersistableCustom implements Persistable<Long>, Serializable {
+public abstract class AbstractPersistableCustom<T extends Serializable> implements Persistable<T>, Serializable {
private static final long serialVersionUID = 9181640245194392646L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Getter(onMethod = @__(@Override))
- private Long id;
+ private T id;
@Transient
@Setter(value = AccessLevel.NONE)
diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/documentmanagement/domain/Image.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/documentmanagement/domain/Image.java
index 1dd0bf2bb..190137a84 100644
--- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/documentmanagement/domain/Image.java
+++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/documentmanagement/domain/Image.java
@@ -25,7 +25,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_image")
-public final class Image extends AbstractPersistableCustom {
+public final class Image extends AbstractPersistableCustom<Long> {
@Column(name = "location", length = 500)
private String location;
diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/repository/domain/ExternalEvent.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/repository/domain/ExternalEvent.java
index b3ff59f18..db0a63b3c 100644
--- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/repository/domain/ExternalEvent.java
+++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/repository/domain/ExternalEvent.java
@@ -37,7 +37,7 @@ import org.apache.fineract.infrastructure.core.service.DateUtils;
@Table(name = "m_external_event")
@Getter
@NoArgsConstructor
-public class ExternalEvent extends AbstractPersistableCustom {
+public class ExternalEvent extends AbstractPersistableCustom<Long> {
@Column(name = "type", nullable = false)
private String type;
diff --git a/fineract-core/src/main/java/org/apache/fineract/organisation/holiday/domain/Holiday.java b/fineract-core/src/main/java/org/apache/fineract/organisation/holiday/domain/Holiday.java
index 6eb16fe82..a5e2372fe 100644
--- a/fineract-core/src/main/java/org/apache/fineract/organisation/holiday/domain/Holiday.java
+++ b/fineract-core/src/main/java/org/apache/fineract/organisation/holiday/domain/Holiday.java
@@ -62,7 +62,7 @@ import org.apache.fineract.organisation.office.domain.Office;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class Holiday extends AbstractPersistableCustom {
+public class Holiday extends AbstractPersistableCustom<Long> {
@Column(name = "name", unique = true, nullable = false, length = 100)
private String name;
diff --git a/fineract-core/src/main/java/org/apache/fineract/organisation/monetary/domain/ApplicationCurrency.java b/fineract-core/src/main/java/org/apache/fineract/organisation/monetary/domain/ApplicationCurrency.java
index e8e0916a3..4eb1f59af 100644
--- a/fineract-core/src/main/java/org/apache/fineract/organisation/monetary/domain/ApplicationCurrency.java
+++ b/fineract-core/src/main/java/org/apache/fineract/organisation/monetary/domain/ApplicationCurrency.java
@@ -26,7 +26,7 @@ import org.apache.fineract.organisation.monetary.data.CurrencyData;
@Entity
@Table(name = "m_currency")
-public class ApplicationCurrency extends AbstractPersistableCustom {
+public class ApplicationCurrency extends AbstractPersistableCustom<Long> {
@Column(name = "code", nullable = false, length = 3)
private String code;
diff --git a/fineract-core/src/main/java/org/apache/fineract/organisation/monetary/domain/OrganisationCurrency.java b/fineract-core/src/main/java/org/apache/fineract/organisation/monetary/domain/OrganisationCurrency.java
index e62e9c5b6..11bf2e387 100644
--- a/fineract-core/src/main/java/org/apache/fineract/organisation/monetary/domain/OrganisationCurrency.java
+++ b/fineract-core/src/main/java/org/apache/fineract/organisation/monetary/domain/OrganisationCurrency.java
@@ -28,7 +28,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
*/
@Entity
@Table(name = "m_organisation_currency")
-public class OrganisationCurrency extends AbstractPersistableCustom {
+public class OrganisationCurrency extends AbstractPersistableCustom<Long> {
@Column(name = "code", nullable = false, length = 3)
private String code;
diff --git a/fineract-core/src/main/java/org/apache/fineract/organisation/office/domain/Office.java b/fineract-core/src/main/java/org/apache/fineract/organisation/office/domain/Office.java
index f6bd289c5..591f78fd0 100644
--- a/fineract-core/src/main/java/org/apache/fineract/organisation/office/domain/Office.java
+++ b/fineract-core/src/main/java/org/apache/fineract/organisation/office/domain/Office.java
@@ -49,7 +49,7 @@ import org.apache.fineract.organisation.office.exception.RootOfficeParentCannotB
@UniqueConstraint(columnNames = { "external_id" }, name = "externalid_org") })
@Getter
@Setter
-public class Office extends AbstractPersistableCustom implements Serializable {
+public class Office extends AbstractPersistableCustom<Long> implements Serializable {
@OneToMany(fetch = FetchType.LAZY)
@JoinColumn(name = "parent_id")
diff --git a/fineract-core/src/main/java/org/apache/fineract/organisation/staff/domain/Staff.java b/fineract-core/src/main/java/org/apache/fineract/organisation/staff/domain/Staff.java
index 88e9d2a0f..7830c40f6 100644
--- a/fineract-core/src/main/java/org/apache/fineract/organisation/staff/domain/Staff.java
+++ b/fineract-core/src/main/java/org/apache/fineract/organisation/staff/domain/Staff.java
@@ -41,7 +41,7 @@ import org.apache.fineract.organisation.office.domain.Office;
@Table(name = "m_staff", uniqueConstraints = { @UniqueConstraint(columnNames = { "display_name" }, name = "display_name"),
@UniqueConstraint(columnNames = { "external_id" }, name = "external_id_UNIQUE"),
@UniqueConstraint(columnNames = { "mobile_no" }, name = "mobile_no_UNIQUE") })
-public class Staff extends AbstractPersistableCustom {
+public class Staff extends AbstractPersistableCustom<Long> {
@Column(name = "firstname", length = 50)
private String firstname;
diff --git a/fineract-core/src/main/java/org/apache/fineract/organisation/workingdays/domain/WorkingDays.java b/fineract-core/src/main/java/org/apache/fineract/organisation/workingdays/domain/WorkingDays.java
index a8a3e78a6..8fbe7125b 100644
--- a/fineract-core/src/main/java/org/apache/fineract/organisation/workingdays/domain/WorkingDays.java
+++ b/fineract-core/src/main/java/org/apache/fineract/organisation/workingdays/domain/WorkingDays.java
@@ -32,7 +32,7 @@ import org.apache.fineract.organisation.workingdays.api.WorkingDaysApiConstants;
@Getter
@Entity
@Table(name = "m_working_days")
-public class WorkingDays extends AbstractPersistableCustom {
+public class WorkingDays extends AbstractPersistableCustom<Long> {
@Column(name = "recurrence", length = 100, nullable = true)
private String recurrence;
diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/domain/Calendar.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/domain/Calendar.java
index 227bc1917..54ed8ae66 100644
--- a/fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/domain/Calendar.java
+++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/domain/Calendar.java
@@ -50,7 +50,7 @@ import org.apache.fineract.portfolio.common.domain.NthDayType;
@Entity
@Table(name = "m_calendar")
-public class Calendar extends AbstractAuditableWithUTCDateTimeCustom {
+public class Calendar extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@Column(name = "title", length = 50, nullable = false)
private String title;
diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarHistory.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarHistory.java
index cd2f1fbfe..b841d492a 100644
--- a/fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarHistory.java
+++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarHistory.java
@@ -29,7 +29,7 @@ import org.apache.fineract.infrastructure.core.service.DateUtils;
@Entity
@Table(name = "m_calendar_history")
-public class CalendarHistory extends AbstractPersistableCustom {
+public class CalendarHistory extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false)
@JoinColumn(name = "calendar_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarInstance.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarInstance.java
index 0e5cae359..88b2399ed 100644
--- a/fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarInstance.java
+++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarInstance.java
@@ -28,7 +28,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_calendar_instance")
-public class CalendarInstance extends AbstractPersistableCustom {
+public class CalendarInstance extends AbstractPersistableCustom<Long> {
@ManyToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name = "calendar_id", nullable = false)
diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/client/domain/Client.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/client/domain/Client.java
index a65f2d44b..a70cb8cf6 100644
--- a/fineract-core/src/main/java/org/apache/fineract/portfolio/client/domain/Client.java
+++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/client/domain/Client.java
@@ -60,7 +60,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
@Setter
@Table(name = "m_client", uniqueConstraints = { @UniqueConstraint(columnNames = { "account_no" }, name = "account_no_UNIQUE"), //
@UniqueConstraint(columnNames = { "mobile_no" }, name = "mobile_no_UNIQUE") })
-public class Client extends AbstractAuditableWithUTCDateTimeCustom {
+public class Client extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@Column(name = "account_no", length = 20, unique = true, nullable = false)
private String accountNumber;
@@ -181,16 +181,6 @@ public class Client extends AbstractAuditableWithUTCDateTimeCustom {
@Column(name = "submittedon_date")
private LocalDate submittedOnDate;
- /*
- * Deprecated since common Auditable fields were introduced. Columns and data left untouched to help migration.
- *
- * @Column(name = "updated_on") private LocalDate updatedOnDate;
- *
- * @ManyToOne(optional = true, fetch = FetchType.LAZY)
- *
- * @JoinColumn(name = "updated_by") private AppUser updatedBy;
- */
-
@ManyToOne(optional = true, fetch = FetchType.LAZY)
@JoinColumn(name = "activatedon_userid")
private AppUser activatedBy;
@@ -751,5 +741,4 @@ public class Client extends AbstractAuditableWithUTCDateTimeCustom {
setDisplayName(null);
}
}
-
}
diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/client/domain/ClientIdentifier.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/client/domain/ClientIdentifier.java
index d2365eb3f..3c4beaadc 100644
--- a/fineract-core/src/main/java/org/apache/fineract/portfolio/client/domain/ClientIdentifier.java
+++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/client/domain/ClientIdentifier.java
@@ -35,7 +35,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
@Table(name = "m_client_identifier", uniqueConstraints = {
@UniqueConstraint(columnNames = { "document_type_id", "document_key" }, name = "unique_identifier_key"),
@UniqueConstraint(columnNames = { "client_id", "document_key", "active" }, name = "unique_active_client_identifier") })
-public class ClientIdentifier extends AbstractAuditableWithUTCDateTimeCustom {
+public class ClientIdentifier extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne
@JoinColumn(name = "client_id", nullable = false)
diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyBucket.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyBucket.java
index bf1995e0b..6bda19523 100644
--- a/fineract-core/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyBucket.java
+++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyBucket.java
@@ -39,7 +39,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
@Entity
@Table(name = "m_delinquency_bucket", uniqueConstraints = {
@UniqueConstraint(name = "uq_delinquency_bucket_name", columnNames = { "name" }) })
-public class DelinquencyBucket extends AbstractAuditableWithUTCDateTimeCustom {
+public class DelinquencyBucket extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@Column(name = "name", nullable = false)
private String name;
diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyRange.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyRange.java
index 8ad31172c..00d573ffe 100644
--- a/fineract-core/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyRange.java
+++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyRange.java
@@ -35,7 +35,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
@Entity
@Table(name = "m_delinquency_range", uniqueConstraints = {
@UniqueConstraint(name = "uq_delinquency_range_classification", columnNames = { "classification" }) })
-public class DelinquencyRange extends AbstractAuditableWithUTCDateTimeCustom {
+public class DelinquencyRange extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@Column(name = "classification", nullable = false)
private String classification;
diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/fund/domain/Fund.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/fund/domain/Fund.java
index cc44a3c01..eb791ef3a 100644
--- a/fineract-core/src/main/java/org/apache/fineract/portfolio/fund/domain/Fund.java
+++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/fund/domain/Fund.java
@@ -31,7 +31,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_fund", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "fund_name_org"),
@UniqueConstraint(columnNames = { "external_id" }, name = "fund_externalid_org") })
-public class Fund extends AbstractPersistableCustom {
+public class Fund extends AbstractPersistableCustom<Long> {
@Column(name = "name")
private String name;
diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/group/domain/Group.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/group/domain/Group.java
index 84d73c8e1..e67b706ae 100644
--- a/fineract-core/src/main/java/org/apache/fineract/portfolio/group/domain/Group.java
+++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/group/domain/Group.java
@@ -58,7 +58,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
@Entity
@Table(name = "m_group")
-public final class Group extends AbstractPersistableCustom {
+public final class Group extends AbstractPersistableCustom<Long> {
@Column(name = "external_id", length = 100, unique = true)
private String externalId;
diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/group/domain/GroupLevel.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/group/domain/GroupLevel.java
index 1b2a1eccb..2f014d341 100644
--- a/fineract-core/src/main/java/org/apache/fineract/portfolio/group/domain/GroupLevel.java
+++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/group/domain/GroupLevel.java
@@ -25,7 +25,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_group_level")
-public class GroupLevel extends AbstractPersistableCustom {
+public class GroupLevel extends AbstractPersistableCustom<Long> {
@Column(name = "parent_id")
private Long parentId;
diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/group/domain/GroupRole.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/group/domain/GroupRole.java
index 6614c5894..d6b2ab10e 100644
--- a/fineract-core/src/main/java/org/apache/fineract/portfolio/group/domain/GroupRole.java
+++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/group/domain/GroupRole.java
@@ -33,7 +33,7 @@ import org.apache.fineract.portfolio.group.api.GroupingTypesApiConstants;
@Entity
@Table(name = "m_group_roles")
-public class GroupRole extends AbstractPersistableCustom {
+public class GroupRole extends AbstractPersistableCustom<Long> {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "group_id")
diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/paymentdetail/domain/PaymentDetail.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/paymentdetail/domain/PaymentDetail.java
index 46de7071e..d7c34206e 100644
--- a/fineract-core/src/main/java/org/apache/fineract/portfolio/paymentdetail/domain/PaymentDetail.java
+++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/paymentdetail/domain/PaymentDetail.java
@@ -36,7 +36,7 @@ import org.apache.fineract.portfolio.paymenttype.domain.PaymentType;
@Entity
@Getter
@Table(name = "m_payment_detail")
-public final class PaymentDetail extends AbstractPersistableCustom {
+public class PaymentDetail extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "payment_type_id", nullable = false)
@@ -57,9 +57,7 @@ public final class PaymentDetail extends AbstractPersistableCustom {
@Column(name = "bank_number", length = 50)
private String bankNumber;
- PaymentDetail() {
-
- }
+ protected PaymentDetail() {}
public static PaymentDetail generatePaymentDetail(final PaymentType paymentType, final JsonCommand command,
final Map<String, Object> changes) {
@@ -85,9 +83,7 @@ public final class PaymentDetail extends AbstractPersistableCustom {
changes.put(PaymentDetailConstants.bankNumberParamName, bankNumber);
}
changes.put("paymentTypeId", paymentType.getId());
- final PaymentDetail paymentDetail = new PaymentDetail(paymentType, accountNumber, checkNumber, routingCode, receiptNumber,
- bankNumber);
- return paymentDetail;
+ return new PaymentDetail(paymentType, accountNumber, checkNumber, routingCode, receiptNumber, bankNumber);
}
public static PaymentDetail instance(final PaymentType paymentType, final String accountNumber, final String checkNumber,
@@ -107,8 +103,7 @@ public final class PaymentDetail extends AbstractPersistableCustom {
public PaymentDetailData toData() {
final PaymentTypeData paymentTypeData = null; // this.paymentType.toData();
- final PaymentDetailData paymentDetailData = new PaymentDetailData(getId(), paymentTypeData, this.accountNumber, this.checkNumber,
- this.routingCode, this.receiptNumber, this.bankNumber);
- return paymentDetailData;
+ return new PaymentDetailData(getId(), paymentTypeData, this.accountNumber, this.checkNumber, this.routingCode, this.receiptNumber,
+ this.bankNumber);
}
}
diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/paymenttype/domain/PaymentType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/paymenttype/domain/PaymentType.java
index f1b5cc671..321276f38 100644
--- a/fineract-core/src/main/java/org/apache/fineract/portfolio/paymenttype/domain/PaymentType.java
+++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/paymenttype/domain/PaymentType.java
@@ -36,7 +36,7 @@ import org.apache.fineract.portfolio.paymenttype.api.PaymentTypeApiResourceConst
@Entity
@Table(name = "m_payment_type")
@AllArgsConstructor
-public class PaymentType extends AbstractPersistableCustom {
+public class PaymentType extends AbstractPersistableCustom<Long> {
@Column(name = "value")
private String name;
diff --git a/fineract-core/src/main/java/org/apache/fineract/useradministration/domain/AppUser.java b/fineract-core/src/main/java/org/apache/fineract/useradministration/domain/AppUser.java
index cce8954de..64f83883f 100644
--- a/fineract-core/src/main/java/org/apache/fineract/useradministration/domain/AppUser.java
+++ b/fineract-core/src/main/java/org/apache/fineract/useradministration/domain/AppUser.java
@@ -57,7 +57,7 @@ import org.springframework.security.core.userdetails.User;
@Entity
@Table(name = "m_appuser", uniqueConstraints = @UniqueConstraint(columnNames = { "username" }, name = "username_org"))
-public class AppUser extends AbstractPersistableCustom implements PlatformUser {
+public class AppUser extends AbstractPersistableCustom<Long> implements PlatformUser {
@Column(name = "email", nullable = false, length = 100)
private String email;
diff --git a/fineract-core/src/main/java/org/apache/fineract/useradministration/domain/AppUserClientMapping.java b/fineract-core/src/main/java/org/apache/fineract/useradministration/domain/AppUserClientMapping.java
index dd3bff37d..2215f58d9 100644
--- a/fineract-core/src/main/java/org/apache/fineract/useradministration/domain/AppUserClientMapping.java
+++ b/fineract-core/src/main/java/org/apache/fineract/useradministration/domain/AppUserClientMapping.java
@@ -28,7 +28,7 @@ import org.apache.fineract.portfolio.client.domain.Client;
@Entity
@Table(name = "m_selfservice_user_client_mapping")
-public class AppUserClientMapping extends AbstractPersistableCustom {
+public class AppUserClientMapping extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false, cascade = CascadeType.ALL)
@JoinColumn(name = "appuser_id", nullable = false)
diff --git a/fineract-core/src/main/java/org/apache/fineract/useradministration/domain/Permission.java b/fineract-core/src/main/java/org/apache/fineract/useradministration/domain/Permission.java
index 5441bcfde..06c84c0cf 100644
--- a/fineract-core/src/main/java/org/apache/fineract/useradministration/domain/Permission.java
+++ b/fineract-core/src/main/java/org/apache/fineract/useradministration/domain/Permission.java
@@ -26,7 +26,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_permission")
-public class Permission extends AbstractPersistableCustom implements Serializable {
+public class Permission extends AbstractPersistableCustom<Long> implements Serializable {
@Column(name = "grouping", nullable = false, length = 45)
private String grouping;
diff --git a/fineract-core/src/main/java/org/apache/fineract/useradministration/domain/Role.java b/fineract-core/src/main/java/org/apache/fineract/useradministration/domain/Role.java
index 21583af80..9009e273f 100644
--- a/fineract-core/src/main/java/org/apache/fineract/useradministration/domain/Role.java
+++ b/fineract-core/src/main/java/org/apache/fineract/useradministration/domain/Role.java
@@ -38,7 +38,7 @@ import org.apache.fineract.useradministration.data.RoleData;
@Entity
@Table(name = "m_role", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "unq_name") })
-public class Role extends AbstractPersistableCustom implements Serializable {
+public class Role extends AbstractPersistableCustom<Long> implements Serializable {
@Column(name = "name", unique = true, nullable = false, length = 100)
private String name;
diff --git a/fineract-document/src/main/java/org/apache/fineract/infrastructure/documentmanagement/domain/Document.java b/fineract-document/src/main/java/org/apache/fineract/infrastructure/documentmanagement/domain/Document.java
index 8d15327b4..2e3ea9ecd 100644
--- a/fineract-document/src/main/java/org/apache/fineract/infrastructure/documentmanagement/domain/Document.java
+++ b/fineract-document/src/main/java/org/apache/fineract/infrastructure/documentmanagement/domain/Document.java
@@ -27,7 +27,7 @@ import org.apache.fineract.infrastructure.documentmanagement.command.DocumentCom
@Entity
@Table(name = "m_document")
-public class Document extends AbstractPersistableCustom {
+public class Document extends AbstractPersistableCustom<Long> {
@Column(name = "parent_entity_type", length = 50)
private String parentEntityType;
diff --git a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwner.java b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwner.java
index 6df9bb0e5..d5d657dd4 100644
--- a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwner.java
+++ b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwner.java
@@ -32,7 +32,7 @@ import org.apache.fineract.infrastructure.core.domain.ExternalId;
@Entity
@NoArgsConstructor
@Table(name = "m_external_asset_owner")
-public class ExternalAssetOwner extends AbstractAuditableWithUTCDateTimeCustom {
+public class ExternalAssetOwner extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@Column(name = "external_id", nullable = false, length = 100, unique = true)
private ExternalId externalId;
diff --git a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerJournalEntryMapping.java b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerJournalEntryMapping.java
index 3e1ef837d..9cc47e225 100644
--- a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerJournalEntryMapping.java
+++ b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerJournalEntryMapping.java
@@ -34,7 +34,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
@Table(name = "m_external_asset_owner_journal_entry_mapping")
@NoArgsConstructor
@Entity
-public class ExternalAssetOwnerJournalEntryMapping extends AbstractAuditableWithUTCDateTimeCustom {
+public class ExternalAssetOwnerJournalEntryMapping extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@OneToOne
@JoinColumn(name = "journal_entry_id", nullable = false)
diff --git a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransfer.java b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransfer.java
index ab9f7f671..9a63df587 100644
--- a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransfer.java
+++ b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransfer.java
@@ -41,7 +41,7 @@ import org.apache.fineract.investor.data.ExternalTransferSubStatus;
@Table(name = "m_external_asset_owner_transfer")
@NoArgsConstructor
@Entity
-public class ExternalAssetOwnerTransfer extends AbstractAuditableWithUTCDateTimeCustom {
+public class ExternalAssetOwnerTransfer extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne
@JoinColumn(name = "owner_id", nullable = false)
diff --git a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferDetails.java b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferDetails.java
index badfa672d..da1d29727 100644
--- a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferDetails.java
+++ b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferDetails.java
@@ -35,7 +35,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
@Table(name = "m_external_asset_owner_transfer_details")
@NoArgsConstructor
@Entity
-public class ExternalAssetOwnerTransferDetails extends AbstractAuditableWithUTCDateTimeCustom {
+public class ExternalAssetOwnerTransferDetails extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "asset_owner_transfer_id", referencedColumnName = "id")
diff --git a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferJournalEntryMapping.java b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferJournalEntryMapping.java
index 888a4fd3d..4be09f20b 100644
--- a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferJournalEntryMapping.java
+++ b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferJournalEntryMapping.java
@@ -34,7 +34,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
@Table(name = "m_external_asset_owner_transfer_journal_entry_mapping")
@NoArgsConstructor
@Entity
-public class ExternalAssetOwnerTransferJournalEntryMapping extends AbstractAuditableWithUTCDateTimeCustom {
+public class ExternalAssetOwnerTransferJournalEntryMapping extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@OneToOne
@JoinColumn(name = "journal_entry_id", nullable = false)
diff --git a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferLoanMapping.java b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferLoanMapping.java
index a665665ba..0f6cb1f9b 100644
--- a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferLoanMapping.java
+++ b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferLoanMapping.java
@@ -33,7 +33,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
@Table(name = "m_external_asset_owner_transfer_loan_mapping")
@NoArgsConstructor
@Entity
-public class ExternalAssetOwnerTransferLoanMapping extends AbstractAuditableWithUTCDateTimeCustom {
+public class ExternalAssetOwnerTransferLoanMapping extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@Column(name = "loan_id", nullable = false)
private Long loanId;
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/collateral/domain/LoanCollateral.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/collateral/domain/LoanCollateral.java
index d5a5c4bfc..28ab6a871 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/collateral/domain/LoanCollateral.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/collateral/domain/LoanCollateral.java
@@ -37,7 +37,7 @@ import org.apache.fineract.portfolio.loanaccount.domain.Loan;
@Entity
@Table(name = "m_loan_collateral")
-public class LoanCollateral extends AbstractPersistableCustom {
+public class LoanCollateral extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false)
@JoinColumn(name = "loan_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/collateralmanagement/domain/ClientCollateralManagement.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/collateralmanagement/domain/ClientCollateralManagement.java
index 0ca15dacb..b97602b5d 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/collateralmanagement/domain/ClientCollateralManagement.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/collateralmanagement/domain/ClientCollateralManagement.java
@@ -39,7 +39,7 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanCollateralManagement
@Entity
@Table(name = "m_client_collateral_management")
-public class ClientCollateralManagement extends AbstractPersistableCustom {
+public class ClientCollateralManagement extends AbstractPersistableCustom<Long> {
@Column(name = "quantity", nullable = false, scale = 5, precision = 20)
private BigDecimal quantity;
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/collateralmanagement/domain/CollateralManagementDomain.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/collateralmanagement/domain/CollateralManagementDomain.java
index 09420b3b6..30a958a1b 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/collateralmanagement/domain/CollateralManagementDomain.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/collateralmanagement/domain/CollateralManagementDomain.java
@@ -39,7 +39,7 @@ import org.apache.fineract.portfolio.collateralmanagement.api.CollateralManageme
@Entity
@Table(name = "m_collateral_management")
-public class CollateralManagementDomain extends AbstractPersistableCustom {
+public class CollateralManagementDomain extends AbstractPersistableCustom<Long> {
@Column(name = "name", length = 20, columnDefinition = " ")
private String name;
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyBucketMappings.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyBucketMappings.java
index 96d843108..6fa952832 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyBucketMappings.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyBucketMappings.java
@@ -35,7 +35,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
@Entity
@Table(name = "m_delinquency_bucket_mappings", uniqueConstraints = {
@UniqueConstraint(name = "uq_delinquency_bucket_mapping", columnNames = { "delinquencyBucket", "delinquencyRange" }) })
-public class DelinquencyBucketMappings extends AbstractAuditableWithUTCDateTimeCustom {
+public class DelinquencyBucketMappings extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne
@JoinColumn(name = "delinquency_bucket_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/domain/LoanDelinquencyAction.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/domain/LoanDelinquencyAction.java
index fed9b5c8e..ac0b8808f 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/domain/LoanDelinquencyAction.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/domain/LoanDelinquencyAction.java
@@ -37,7 +37,7 @@ import org.apache.fineract.portfolio.loanaccount.domain.Loan;
@NoArgsConstructor
@Entity
@Table(name = "m_loan_delinquency_action")
-public class LoanDelinquencyAction extends AbstractAuditableWithUTCDateTimeCustom {
+public class LoanDelinquencyAction extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne
@JoinColumn(name = "loan_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/domain/LoanDelinquencyTagHistory.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/domain/LoanDelinquencyTagHistory.java
index 97e576f5f..da4bb7e0a 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/domain/LoanDelinquencyTagHistory.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/domain/LoanDelinquencyTagHistory.java
@@ -36,7 +36,7 @@ import org.apache.fineract.portfolio.loanaccount.domain.Loan;
@NoArgsConstructor
@Entity
@Table(name = "m_loan_delinquency_tag_history")
-public class LoanDelinquencyTagHistory extends AbstractAuditableWithUTCDateTimeCustom {
+public class LoanDelinquencyTagHistory extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne
@JoinColumn(name = "delinquency_range_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/domain/LoanInstallmentDelinquencyTag.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/domain/LoanInstallmentDelinquencyTag.java
index 248c49d51..52adee846 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/domain/LoanInstallmentDelinquencyTag.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/delinquency/domain/LoanInstallmentDelinquencyTag.java
@@ -38,7 +38,7 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleIns
@NoArgsConstructor
@Entity
@Table(name = "m_loan_installment_delinquency_tag")
-public class LoanInstallmentDelinquencyTag extends AbstractAuditableWithUTCDateTimeCustom {
+public class LoanInstallmentDelinquencyTag extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne
@JoinColumn(name = "delinquency_range_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/GroupLoanIndividualMonitoringAccount.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/GroupLoanIndividualMonitoringAccount.java
index 430ac60b5..52848f8f4 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/GroupLoanIndividualMonitoringAccount.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/GroupLoanIndividualMonitoringAccount.java
@@ -33,7 +33,7 @@ import org.apache.fineract.portfolio.group.domain.Group;
@Entity
@Table(name = "glim_accounts", uniqueConstraints = { @UniqueConstraint(columnNames = { "account_number" }, name = "FK_glim_id") })
-public class GroupLoanIndividualMonitoringAccount extends AbstractPersistableCustom {
+public class GroupLoanIndividualMonitoringAccount extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "group_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
index 4a8e783d7..b35ddfc55 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
@@ -154,7 +154,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
@UniqueConstraint(columnNames = { "external_id" }, name = "loan_externalid_UNIQUE") })
@Setter
@Getter
-public class Loan extends AbstractAuditableWithUTCDateTimeCustom {
+public class Loan extends AbstractAuditableWithUTCDateTimeCustom<Long> {
public static final String RECALCULATE_LOAN_SCHEDULE = "recalculateLoanSchedule";
public static final String EXTERNAL_ID = "externalId";
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCharge.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCharge.java
index f81471b04..2b6b18baf 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCharge.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCharge.java
@@ -60,7 +60,7 @@ import org.apache.fineract.portfolio.loanaccount.data.LoanInstallmentChargeData;
@Entity
@Table(name = "m_loan_charge", uniqueConstraints = { @UniqueConstraint(columnNames = { "external_id" }, name = "external_id") })
-public class LoanCharge extends AbstractAuditableWithUTCDateTimeCustom {
+public class LoanCharge extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne(optional = false)
@JoinColumn(name = "loan_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanChargePaidBy.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanChargePaidBy.java
index c483338f3..e70a9f521 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanChargePaidBy.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanChargePaidBy.java
@@ -28,7 +28,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_loan_charge_paid_by")
-public class LoanChargePaidBy extends AbstractPersistableCustom {
+public class LoanChargePaidBy extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "loan_transaction_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCollateralManagement.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCollateralManagement.java
index 6a65ad450..9b180b8f2 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCollateralManagement.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCollateralManagement.java
@@ -30,7 +30,7 @@ import org.apache.fineract.portfolio.loanaccount.data.LoanCollateralManagementDa
@Entity
@Table(name = "m_loan_collateral_management")
-public class LoanCollateralManagement extends AbstractPersistableCustom {
+public class LoanCollateralManagement extends AbstractPersistableCustom<Long> {
@Column(name = "quantity", nullable = false, scale = 5, precision = 20)
private BigDecimal quantity;
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCreditAllocationRule.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCreditAllocationRule.java
index 6707c9d35..b61b4a017 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCreditAllocationRule.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCreditAllocationRule.java
@@ -46,7 +46,7 @@ import org.apache.fineract.portfolio.loanproduct.domain.CreditAllocationTransact
@UniqueConstraint(columnNames = { "loan_id", "transaction_type" }, name = "uq_m_loan_credit_allocation_rule") })
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
-public class LoanCreditAllocationRule extends AbstractAuditableWithUTCDateTimeCustom {
+public class LoanCreditAllocationRule extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne
@JoinColumn(name = "loan_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanDisbursementDetails.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanDisbursementDetails.java
index a37fd0e2c..08dc564b8 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanDisbursementDetails.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanDisbursementDetails.java
@@ -32,7 +32,7 @@ import org.apache.fineract.portfolio.loanaccount.data.DisbursementData;
@Entity
@Table(name = "m_loan_disbursement_detail")
-public class LoanDisbursementDetails extends AbstractPersistableCustom {
+public class LoanDisbursementDetails extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "loan_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInstallmentCharge.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInstallmentCharge.java
index 1b962a903..6582464e4 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInstallmentCharge.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInstallmentCharge.java
@@ -32,7 +32,7 @@ import org.apache.fineract.portfolio.loanaccount.data.LoanInstallmentChargeData;
@Entity
@Table(name = "m_loan_installment_charge")
-public class LoanInstallmentCharge extends AbstractPersistableCustom implements Comparable<LoanInstallmentCharge> {
+public class LoanInstallmentCharge extends AbstractPersistableCustom<Long> implements Comparable<LoanInstallmentCharge> {
@ManyToOne(optional = false)
@JoinColumn(name = "loan_charge_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInterestRecalcualtionAdditionalDetails.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInterestRecalcualtionAdditionalDetails.java
index 9afd57ea6..17886d9e4 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInterestRecalcualtionAdditionalDetails.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInterestRecalcualtionAdditionalDetails.java
@@ -29,7 +29,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_loan_interest_recalculation_additional_details")
-public class LoanInterestRecalcualtionAdditionalDetails extends AbstractPersistableCustom {
+public class LoanInterestRecalcualtionAdditionalDetails extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false)
@JoinColumn(name = "loan_repayment_schedule_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInterestRecalculationDetails.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInterestRecalculationDetails.java
index 742b42645..5da30a483 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInterestRecalculationDetails.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInterestRecalculationDetails.java
@@ -37,7 +37,7 @@ import org.apache.fineract.portfolio.loanproduct.domain.RecalculationFrequencyTy
@Entity
@Table(name = "m_loan_recalculation_details")
-public class LoanInterestRecalculationDetails extends AbstractPersistableCustom {
+public class LoanInterestRecalculationDetails extends AbstractPersistableCustom<Long> {
@OneToOne
@JoinColumn(name = "loan_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanOverdueInstallmentCharge.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanOverdueInstallmentCharge.java
index 4e20b6fa6..361a49da1 100755
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanOverdueInstallmentCharge.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanOverdueInstallmentCharge.java
@@ -29,7 +29,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Getter
@Table(name = "m_loan_overdue_installment_charge")
-public class LoanOverdueInstallmentCharge extends AbstractPersistableCustom {
+public class LoanOverdueInstallmentCharge extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false)
@JoinColumn(name = "loan_charge_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanPaymentAllocationRule.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanPaymentAllocationRule.java
index d580817fc..b4f20b614 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanPaymentAllocationRule.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanPaymentAllocationRule.java
@@ -47,7 +47,7 @@ import org.apache.fineract.portfolio.loanproduct.domain.PaymentAllocationTypeLis
@UniqueConstraint(columnNames = { "loan_id", "transaction_type" }, name = "uq_m_loan_payment_allocation_rule") })
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
-public class LoanPaymentAllocationRule extends AbstractAuditableWithUTCDateTimeCustom {
+public class LoanPaymentAllocationRule extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne
@JoinColumn(name = "loan_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleInstallment.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleInstallment.java
index c1ff29222..97c2ea015 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleInstallment.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleInstallment.java
@@ -40,7 +40,7 @@ import org.apache.fineract.portfolio.repaymentwithpostdatedchecks.domain.PostDat
@Entity
@Table(name = "m_loan_repayment_schedule")
-public class LoanRepaymentScheduleInstallment extends AbstractAuditableWithUTCDateTimeCustom
+public class LoanRepaymentScheduleInstallment extends AbstractAuditableWithUTCDateTimeCustom<Long>
implements Comparable<LoanRepaymentScheduleInstallment> {
@ManyToOne(optional = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRescheduleRequestToTermVariationMapping.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRescheduleRequestToTermVariationMapping.java
index 91285e8e4..4e1f57038 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRescheduleRequestToTermVariationMapping.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRescheduleRequestToTermVariationMapping.java
@@ -28,7 +28,7 @@ import org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanResch
@Entity
@Table(name = "m_loan_reschedule_request_term_variations_mapping")
-public class LoanRescheduleRequestToTermVariationMapping extends AbstractPersistableCustom {
+public class LoanRescheduleRequestToTermVariationMapping extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false, cascade = CascadeType.ALL)
@JoinColumn(name = "loan_reschedule_request_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanStatusChangeHistory.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanStatusChangeHistory.java
index 371a0915e..d37e609fe 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanStatusChangeHistory.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanStatusChangeHistory.java
@@ -38,7 +38,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
@Getter
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
-public class LoanStatusChangeHistory extends AbstractAuditableWithUTCDateTimeCustom {
+public class LoanStatusChangeHistory extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne
@JoinColumn(name = "loan_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTermVariations.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTermVariations.java
index 1e56131a1..d5f41828d 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTermVariations.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTermVariations.java
@@ -34,7 +34,7 @@ import org.apache.fineract.portfolio.loanproduct.service.LoanEnumerations;
@Entity
@Table(name = "m_loan_term_variations")
-public class LoanTermVariations extends AbstractPersistableCustom {
+public class LoanTermVariations extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false)
@JoinColumn(name = "loan_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTopupDetails.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTopupDetails.java
index 4c7954596..554a3e203 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTopupDetails.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTopupDetails.java
@@ -28,7 +28,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_loan_topup")
-public class LoanTopupDetails extends AbstractPersistableCustom {
+public class LoanTopupDetails extends AbstractPersistableCustom<Long> {
@OneToOne
@JoinColumn(name = "loan_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheCharge.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheCharge.java
index d2a31909e..5e0fca7ce 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheCharge.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheCharge.java
@@ -28,7 +28,7 @@ import org.apache.fineract.portfolio.charge.domain.Charge;
@Entity
@Table(name = "m_loan_tranche_charges")
-public class LoanTrancheCharge extends AbstractPersistableCustom {
+public class LoanTrancheCharge extends AbstractPersistableCustom<Long> {
@ManyToOne(cascade = CascadeType.ALL, optional = false)
@JoinColumn(name = "loan_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheDisbursementCharge.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheDisbursementCharge.java
index c796321f6..e5ab289d3 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheDisbursementCharge.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheDisbursementCharge.java
@@ -27,7 +27,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_loan_tranche_disbursement_charge")
-public class LoanTrancheDisbursementCharge extends AbstractPersistableCustom {
+public class LoanTrancheDisbursementCharge extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "loan_charge_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java
index 8b25e7e44..789407016 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java
@@ -60,7 +60,7 @@ import org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail;
*/
@Entity
@Table(name = "m_loan_transaction", uniqueConstraints = { @UniqueConstraint(columnNames = { "external_id" }, name = "external_id_UNIQUE") })
-public class LoanTransaction extends AbstractAuditableWithUTCDateTimeCustom {
+public class LoanTransaction extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne(optional = false)
@JoinColumn(name = "loan_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionRelation.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionRelation.java
index c76f73b81..d74f7757c 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionRelation.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionRelation.java
@@ -32,7 +32,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
@Getter
@Entity
@Table(name = "m_loan_transaction_relation")
-public class LoanTransactionRelation extends AbstractAuditableWithUTCDateTimeCustom {
+public class LoanTransactionRelation extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne
@JoinColumn(name = "from_loan_transaction_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionToRepaymentScheduleMapping.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionToRepaymentScheduleMapping.java
index 7763d2cb4..3249b4d1f 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionToRepaymentScheduleMapping.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionToRepaymentScheduleMapping.java
@@ -31,7 +31,7 @@ import org.apache.fineract.organisation.monetary.domain.Money;
@Entity
@Table(name = "m_loan_transaction_repayment_schedule_mapping")
-public class LoanTransactionToRepaymentScheduleMapping extends AbstractPersistableCustom {
+public class LoanTransactionToRepaymentScheduleMapping extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false, cascade = CascadeType.PERSIST)
@JoinColumn(name = "loan_transaction_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/reaging/LoanReAgeParameter.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/reaging/LoanReAgeParameter.java
index f62b1f88e..84b0ee333 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/reaging/LoanReAgeParameter.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/reaging/LoanReAgeParameter.java
@@ -37,7 +37,7 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanTransaction;
@Table(name = "m_loan_reage_parameter")
@AllArgsConstructor
@Getter
-public class LoanReAgeParameter extends AbstractAuditableWithUTCDateTimeCustom {
+public class LoanReAgeParameter extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@OneToOne
@JoinColumn(name = "loan_transaction_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanRepaymentScheduleHistory.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanRepaymentScheduleHistory.java
index 662841600..b2f52da58 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanRepaymentScheduleHistory.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanRepaymentScheduleHistory.java
@@ -37,7 +37,7 @@ import org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanResch
@Entity
@Table(name = "m_loan_repayment_schedule_history")
-public class LoanRepaymentScheduleHistory extends AbstractPersistableCustom {
+public class LoanRepaymentScheduleHistory extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false)
@JoinColumn(name = "loan_id")
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/domain/LoanRescheduleRequest.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/domain/LoanRescheduleRequest.java
index 9068d3572..d7eb19a7c 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/domain/LoanRescheduleRequest.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/domain/LoanRescheduleRequest.java
@@ -40,7 +40,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
@Entity
@Table(name = "m_loan_reschedule_request")
-public class LoanRescheduleRequest extends AbstractPersistableCustom {
+public class LoanRescheduleRequest extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "loan_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProduct.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProduct.java
index b7d7191a5..dd3f7d99d 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProduct.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProduct.java
@@ -84,7 +84,7 @@ import org.apache.fineract.portfolio.rate.domain.Rate;
@Table(name = "m_product_loan", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "unq_name"),
@UniqueConstraint(columnNames = { "external_id" }, name = "external_id_UNIQUE"),
@UniqueConstraint(columnNames = { "short_name" }, name = "unq_short_name") })
-public class LoanProduct extends AbstractPersistableCustom {
+public class LoanProduct extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "fund_id")
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductBorrowerCycleVariations.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductBorrowerCycleVariations.java
index 7b4400520..09ee218bd 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductBorrowerCycleVariations.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductBorrowerCycleVariations.java
@@ -29,7 +29,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_product_loan_variations_borrower_cycle")
-public class LoanProductBorrowerCycleVariations extends AbstractPersistableCustom {
+public class LoanProductBorrowerCycleVariations extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "loan_product_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductConfigurableAttributes.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductConfigurableAttributes.java
index 9902028c5..ffde89ff1 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductConfigurableAttributes.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductConfigurableAttributes.java
@@ -31,7 +31,7 @@ import org.apache.fineract.portfolio.loanproduct.LoanProductConstants;
@Entity
@Table(name = "m_product_loan_configurable_attributes")
-public class LoanProductConfigurableAttributes extends AbstractPersistableCustom implements Serializable {
+public class LoanProductConfigurableAttributes extends AbstractPersistableCustom<Long> implements Serializable {
@OneToOne
@JoinColumn(name = "loan_product_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductCreditAllocationRule.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductCreditAllocationRule.java
index 961229cc7..31024d7aa 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductCreditAllocationRule.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductCreditAllocationRule.java
@@ -43,7 +43,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
@UniqueConstraint(columnNames = { "loan_product_id", "transaction_type" }, name = "uq_m_loan_product_credit_allocation_rule") })
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
-public class LoanProductCreditAllocationRule extends AbstractAuditableWithUTCDateTimeCustom {
+public class LoanProductCreditAllocationRule extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne
@JoinColumn(name = "loan_product_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductFloatingRates.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductFloatingRates.java
index 1c29cc270..6ab89e8d8 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductFloatingRates.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductFloatingRates.java
@@ -36,7 +36,7 @@ import org.apache.fineract.portfolio.floatingrates.domain.FloatingRate;
@Entity
@Table(name = "m_product_loan_floating_rates")
-public class LoanProductFloatingRates extends AbstractPersistableCustom {
+public class LoanProductFloatingRates extends AbstractPersistableCustom<Long> {
@OneToOne
@JoinColumn(name = "loan_product_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductGuaranteeDetails.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductGuaranteeDetails.java
index 1cf04c6cf..5855dc15a 100755
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductGuaranteeDetails.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductGuaranteeDetails.java
@@ -37,7 +37,7 @@ import org.apache.fineract.portfolio.loanproduct.LoanProductConstants;
@Entity
@Table(name = "m_product_loan_guarantee_details")
-public class LoanProductGuaranteeDetails extends AbstractPersistableCustom {
+public class LoanProductGuaranteeDetails extends AbstractPersistableCustom<Long> {
@OneToOne
@JoinColumn(name = "loan_product_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductInterestRecalculationDetails.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductInterestRecalculationDetails.java
index 042240379..b46c1bae5 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductInterestRecalculationDetails.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductInterestRecalculationDetails.java
@@ -36,7 +36,7 @@ import org.apache.fineract.portfolio.loanproduct.LoanProductConstants;
@Entity
@Table(name = "m_product_loan_recalculation_details")
-public class LoanProductInterestRecalculationDetails extends AbstractPersistableCustom {
+public class LoanProductInterestRecalculationDetails extends AbstractPersistableCustom<Long> {
@OneToOne
@JoinColumn(name = "product_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductPaymentAllocationRule.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductPaymentAllocationRule.java
index 227210897..ae26834eb 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductPaymentAllocationRule.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductPaymentAllocationRule.java
@@ -43,7 +43,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
@UniqueConstraint(columnNames = { "loan_product_id", "transaction_type" }, name = "uq_m_loan_product_payment_allocation_rule") })
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
-public class LoanProductPaymentAllocationRule extends AbstractAuditableWithUTCDateTimeCustom {
+public class LoanProductPaymentAllocationRule extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne
@JoinColumn(name = "loan_product_id", nullable = false)
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductVariableInstallmentConfig.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductVariableInstallmentConfig.java
index 8182e6159..53922b3c9 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductVariableInstallmentConfig.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductVariableInstallmentConfig.java
@@ -38,7 +38,7 @@ import org.apache.fineract.portfolio.loanproduct.LoanProductConstants;
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "m_product_loan_variable_installment_config")
-public class LoanProductVariableInstallmentConfig extends AbstractPersistableCustom {
+public class LoanProductVariableInstallmentConfig extends AbstractPersistableCustom<Long> {
@Setter
@OneToOne
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/repaymentwithpostdatedchecks/domain/PostDatedChecks.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/repaymentwithpostdatedchecks/domain/PostDatedChecks.java
index 5b3c76894..ac4f50094 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/repaymentwithpostdatedchecks/domain/PostDatedChecks.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/repaymentwithpostdatedchecks/domain/PostDatedChecks.java
@@ -34,7 +34,7 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleIns
@Entity
@Table(name = "m_repayment_with_post_dated_checks")
-public class PostDatedChecks extends AbstractPersistableCustom {
+public class PostDatedChecks extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false)
@JoinColumn(name = "loan_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-progressive-loan/src/test/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/AdvancedPaymentScheduleTransactionProcessorTest.java b/fineract-progressive-loan/src/test/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/AdvancedPaymentScheduleTransactionProcessorTest.java
index 24979b4bc..551ae9cbd 100644
--- a/fineract-progressive-loan/src/test/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/AdvancedPaymentScheduleTransactionProcessorTest.java
+++ b/fineract-progressive-loan/src/test/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/AdvancedPaymentScheduleTransactionProcessorTest.java
@@ -465,6 +465,7 @@ class AdvancedPaymentScheduleTransactionProcessorTest {
Money money = Money.of(MONETARY_CURRENCY, BigDecimal.valueOf(transactionAmount));
lenient().when(chargeback.getAmount(MONETARY_CURRENCY)).thenReturn(money);
lenient().when(chargeback.getTransactionDate()).thenReturn(LocalDate.of(2023, 1, 1));
+ lenient().when(chargeback.getId()).thenReturn(1L);
return chargeback;
}
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/LoanProductProvisioningEntry.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/LoanProductProvisioningEntry.java
index d696545b7..2315b13ee 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/LoanProductProvisioningEntry.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/LoanProductProvisioningEntry.java
@@ -41,7 +41,7 @@ import org.apache.fineract.portfolio.loanproduct.domain.LoanProduct;
@Accessors(chain = true)
@Entity
@Table(name = "m_loanproduct_provisioning_entry")
-public class LoanProductProvisioningEntry extends AbstractPersistableCustom {
+public class LoanProductProvisioningEntry extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false)
@JoinColumn(name = "history_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/ProvisioningEntry.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/ProvisioningEntry.java
index a5a2e7871..10084c941 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/ProvisioningEntry.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/ProvisioningEntry.java
@@ -43,7 +43,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
@Accessors(chain = true)
@Entity
@Table(name = "m_provisioning_history")
-public class ProvisioningEntry extends AbstractPersistableCustom {
+public class ProvisioningEntry extends AbstractPersistableCustom<Long> {
@Column(name = "journal_entry_created")
private Boolean isJournalEntryCreated;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/COBBusinessStepService.java b/fineract-provider/src/main/java/org/apache/fineract/cob/COBBusinessStepService.java
index 1ab1d82e8..8cb41c46f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/cob/COBBusinessStepService.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/cob/COBBusinessStepService.java
@@ -26,9 +26,9 @@ import org.jetbrains.annotations.NotNull;
public interface COBBusinessStepService {
- <T extends COBBusinessStep<S>, S extends AbstractPersistableCustom> S run(TreeMap<Long, String> executionMap, S item);
+ <T extends COBBusinessStep<S>, S extends AbstractPersistableCustom<Long>> S run(TreeMap<Long, String> executionMap, S item);
@NotNull
- <T extends COBBusinessStep<S>, S extends AbstractPersistableCustom> Set<BusinessStepNameAndOrder> getCOBBusinessSteps(
+ <T extends COBBusinessStep<S>, S extends AbstractPersistableCustom<Long>> Set<BusinessStepNameAndOrder> getCOBBusinessSteps(
Class<T> businessStepClass, String cobJobName);
}
diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/COBBusinessStepServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/cob/COBBusinessStepServiceImpl.java
index 29890bd5f..9ec3d7393 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/cob/COBBusinessStepServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/cob/COBBusinessStepServiceImpl.java
@@ -56,7 +56,7 @@ public class COBBusinessStepServiceImpl implements COBBusinessStepService {
@SuppressWarnings({ "unchecked" })
@Override
- public <T extends COBBusinessStep<S>, S extends AbstractPersistableCustom> S run(TreeMap<Long, String> executionMap, S item) {
+ public <T extends COBBusinessStep<S>, S extends AbstractPersistableCustom<Long>> S run(TreeMap<Long, String> executionMap, S item) {
if (executionMap == null || executionMap.isEmpty()) {
throw new BusinessStepException("Execution map is empty! COB Business step execution skipped!");
}
@@ -94,7 +94,7 @@ public class COBBusinessStepServiceImpl implements COBBusinessStepService {
@NotNull
@Override
- public <T extends COBBusinessStep<S>, S extends AbstractPersistableCustom> Set<BusinessStepNameAndOrder> getCOBBusinessSteps(
+ public <T extends COBBusinessStep<S>, S extends AbstractPersistableCustom<Long>> Set<BusinessStepNameAndOrder> getCOBBusinessSteps(
Class<T> businessStepClass, String cobJobName) {
List<BatchBusinessStep> cobStepConfigs = batchBusinessStepRepository.findAllByJobName(cobJobName);
List<String> businessSteps = Arrays.stream(beanFactory.getBeanNamesForType(businessStepClass)).toList();
diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/domain/BatchBusinessStep.java b/fineract-provider/src/main/java/org/apache/fineract/cob/domain/BatchBusinessStep.java
index 7263f1f6e..f3d95f7e2 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/cob/domain/BatchBusinessStep.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/cob/domain/BatchBusinessStep.java
@@ -31,7 +31,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@NoArgsConstructor
@Getter
@Setter
-public class BatchBusinessStep extends AbstractPersistableCustom {
+public class BatchBusinessStep extends AbstractPersistableCustom<Long> {
@Column(name = "job_name", nullable = false)
private String jobName;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/service/LoanReloadService.java b/fineract-provider/src/main/java/org/apache/fineract/cob/service/LoanReloadService.java
index 4e86b0d01..ddff5dd01 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/cob/service/LoanReloadService.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/cob/service/LoanReloadService.java
@@ -31,7 +31,7 @@ public class LoanReloadService implements ReloadService<Loan> {
private final LoanAssembler loanAssembler;
@Override
- public <S extends AbstractPersistableCustom> boolean canReload(S input) {
+ public <S extends AbstractPersistableCustom<Long>> boolean canReload(S input) {
return input instanceof Loan;
}
diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/service/ReloadService.java b/fineract-provider/src/main/java/org/apache/fineract/cob/service/ReloadService.java
index eec0033fc..007d77350 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/cob/service/ReloadService.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/cob/service/ReloadService.java
@@ -20,9 +20,9 @@ package org.apache.fineract.cob.service;
import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
-public interface ReloadService<S extends AbstractPersistableCustom> {
+public interface ReloadService<S extends AbstractPersistableCustom<Long>> {
- <X extends AbstractPersistableCustom> boolean canReload(X input);
+ <X extends AbstractPersistableCustom<Long>> boolean canReload(X input);
S reload(S input);
}
diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/service/ReloaderService.java b/fineract-provider/src/main/java/org/apache/fineract/cob/service/ReloaderService.java
index 79824dc74..a8579cb93 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/cob/service/ReloaderService.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/cob/service/ReloaderService.java
@@ -30,7 +30,7 @@ public class ReloaderService {
private final List<ReloadService> reloadServices;
- public <S extends AbstractPersistableCustom> S reload(S input) {
+ public <S extends AbstractPersistableCustom<Long>> S reload(S input) {
for (ReloadService reloadService : reloadServices) {
if (reloadService.canReload(input)) {
return (S) reloadService.reload(input);
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/domain/AccountNumberFormat.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/domain/AccountNumberFormat.java
index c4181f376..aaec7836c 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/domain/AccountNumberFormat.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/domain/AccountNumberFormat.java
@@ -29,7 +29,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = AccountNumberFormatConstants.ACCOUNT_NUMBER_FORMAT_TABLE_NAME, uniqueConstraints = { @UniqueConstraint(columnNames = {
AccountNumberFormatConstants.ACCOUNT_TYPE_ENUM_COLUMN_NAME }, name = AccountNumberFormatConstants.ACCOUNT_TYPE_UNIQUE_CONSTRAINT_NAME) })
-public class AccountNumberFormat extends AbstractPersistableCustom {
+public class AccountNumberFormat extends AbstractPersistableCustom<Long> {
@Column(name = AccountNumberFormatConstants.ACCOUNT_TYPE_ENUM_COLUMN_NAME, nullable = false)
private Integer accountTypeEnum;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/domain/ImportDocument.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/domain/ImportDocument.java
index 139802962..259aac1c3 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/domain/ImportDocument.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/domain/ImportDocument.java
@@ -32,7 +32,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
@Entity
@Table(name = "m_import_document")
-public class ImportDocument extends AbstractPersistableCustom {
+public class ImportDocument extends AbstractPersistableCustom<Long> {
@OneToOne
@JoinColumn(name = "document_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailCampaign.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailCampaign.java
index 7af4a580d..b17d50998 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailCampaign.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailCampaign.java
@@ -53,7 +53,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class EmailCampaign extends AbstractPersistableCustom {
+public class EmailCampaign extends AbstractPersistableCustom<Long> {
@Column(name = "campaign_name", nullable = false)
private String campaignName;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailConfiguration.java
index b15fe274d..d40ff9a04 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailConfiguration.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailConfiguration.java
@@ -33,7 +33,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class EmailConfiguration extends AbstractPersistableCustom {
+public class EmailConfiguration extends AbstractPersistableCustom<Long> {
@Column(name = "name", nullable = false)
private String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailMessage.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailMessage.java
index bfe38fcdc..32d6db4a0 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailMessage.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailMessage.java
@@ -44,7 +44,7 @@ import org.apache.fineract.portfolio.group.domain.Group;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class EmailMessage extends AbstractPersistableCustom {
+public class EmailMessage extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "group_id", nullable = true)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/domain/SmsCampaign.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/domain/SmsCampaign.java
index f230d0bc8..4c472abdf 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/domain/SmsCampaign.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/domain/SmsCampaign.java
@@ -49,7 +49,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
@Entity
@Table(name = "sms_campaign", uniqueConstraints = { @UniqueConstraint(columnNames = { "campaign_name" }, name = "campaign_name_UNIQUE") })
-public class SmsCampaign extends AbstractPersistableCustom {
+public class SmsCampaign extends AbstractPersistableCustom<Long> {
@Column(name = "campaign_name", nullable = false)
private String campaignName;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/ExternalService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/ExternalService.java
index d96473fea..6ca584596 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/ExternalService.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/ExternalService.java
@@ -35,7 +35,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class ExternalService extends AbstractPersistableCustom {
+public class ExternalService extends AbstractPersistableCustom<Long> {
@Column(name = "name", length = 50)
private String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/GlobalConfigurationProperty.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/GlobalConfigurationProperty.java
index a38401d24..89b3707e9 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/GlobalConfigurationProperty.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/GlobalConfigurationProperty.java
@@ -40,7 +40,7 @@ import org.apache.fineract.infrastructure.security.exception.ForcePasswordResetE
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class GlobalConfigurationProperty extends AbstractPersistableCustom {
+public class GlobalConfigurationProperty extends AbstractPersistableCustom<Long> {
@Column(name = "name", nullable = false)
private String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureau.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureau.java
index 900655c8d..347da14e2 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureau.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureau.java
@@ -34,7 +34,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class CreditBureau extends AbstractPersistableCustom {
+public class CreditBureau extends AbstractPersistableCustom<Long> {
private String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauConfiguration.java
index 52b089bb8..260cb07b9 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauConfiguration.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauConfiguration.java
@@ -39,7 +39,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class CreditBureauConfiguration extends AbstractPersistableCustom {
+public class CreditBureauConfiguration extends AbstractPersistableCustom<Long> {
@Column(name = "configkey")
private String configurationKey;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauLoanProductMapping.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauLoanProductMapping.java
index 88db31ebd..c2d2cc088 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauLoanProductMapping.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauLoanProductMapping.java
@@ -39,7 +39,7 @@ import org.apache.fineract.portfolio.loanproduct.domain.LoanProduct;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class CreditBureauLoanProductMapping extends AbstractPersistableCustom {
+public class CreditBureauLoanProductMapping extends AbstractPersistableCustom<Long> {
@Column(name = "is_credit_check_mandatory")
private boolean creditCheckMandatory;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauToken.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauToken.java
index 793ef1dd1..ba536c027 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauToken.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauToken.java
@@ -40,7 +40,7 @@ import org.slf4j.LoggerFactory;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class CreditBureauToken extends AbstractPersistableCustom {
+public class CreditBureauToken extends AbstractPersistableCustom<Long> {
private static final Logger LOG = LoggerFactory.getLogger(CreditBureauToken.class);
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditReport.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditReport.java
index e377cc6ab..521084008 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditReport.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditReport.java
@@ -35,7 +35,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Getter
@Setter
@Accessors(chain = true)
-public class CreditReport extends AbstractPersistableCustom {
+public class CreditReport extends AbstractPersistableCustom<Long> {
@Column(name = "credit_bureau_id")
private Long creditBureauId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/OrganisationCreditBureau.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/OrganisationCreditBureau.java
index 360d92591..4c29203da 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/OrganisationCreditBureau.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/OrganisationCreditBureau.java
@@ -32,7 +32,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_organisation_creditbureau")
-public class OrganisationCreditBureau extends AbstractPersistableCustom {
+public class OrganisationCreditBureau extends AbstractPersistableCustom<Long> {
private String alias;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/EntityDatatableChecks.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/EntityDatatableChecks.java
index 442d28e67..50aeba4d4 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/EntityDatatableChecks.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/EntityDatatableChecks.java
@@ -32,7 +32,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Getter
@Entity
@Table(name = "m_entity_datatable_check")
-public class EntityDatatableChecks extends AbstractPersistableCustom {
+public class EntityDatatableChecks extends AbstractPersistableCustom<Long> {
@Column(name = "application_table_name", nullable = false)
private String entity;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/RegisteredDatatable.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/RegisteredDatatable.java
index 556eb379f..d75590e30 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/RegisteredDatatable.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/RegisteredDatatable.java
@@ -31,7 +31,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@AllArgsConstructor
@Entity
@Table(name = "x_registered_table")
-public class RegisteredDatatable extends AbstractPersistableCustom {
+public class RegisteredDatatable extends AbstractPersistableCustom<Long> {
@Column(name = "registered_table_name", nullable = false)
private String datatableName;
@@ -46,5 +46,4 @@ public class RegisteredDatatable extends AbstractPersistableCustom {
private int category;
public RegisteredDatatable() {}
-
}
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/Report.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/Report.java
index 9c7cd3e97..8c1332bdc 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/Report.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/Report.java
@@ -43,7 +43,7 @@ import org.apache.fineract.infrastructure.core.exception.PlatformDataIntegrityEx
@Entity
@Table(name = "stretchy_report", uniqueConstraints = { @UniqueConstraint(columnNames = { "report_name" }, name = "unq_report_name") })
-public final class Report extends AbstractPersistableCustom {
+public final class Report extends AbstractPersistableCustom<Long> {
@Column(name = "report_name", nullable = false, unique = true)
private String reportName;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportParameter.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportParameter.java
index 6500359a3..b89b9e49f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportParameter.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportParameter.java
@@ -24,7 +24,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "stretchy_parameter")
-public class ReportParameter extends AbstractPersistableCustom {
+public class ReportParameter extends AbstractPersistableCustom<Long> {
protected ReportParameter() {
//
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportParameterUsage.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportParameterUsage.java
index 963a2fbe7..3ef8076e6 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportParameterUsage.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportParameterUsage.java
@@ -27,7 +27,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "stretchy_report_parameter")
-public final class ReportParameterUsage extends AbstractPersistableCustom {
+public final class ReportParameterUsage extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false)
@JoinColumn(name = "report_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityAccess.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityAccess.java
index ad60bb8c9..f3184a71c 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityAccess.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityAccess.java
@@ -40,7 +40,7 @@ import org.apache.fineract.infrastructure.entityaccess.FineractEntityAccessConst
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class FineractEntityAccess extends AbstractPersistableCustom {
+public class FineractEntityAccess extends AbstractPersistableCustom<Long> {
@Column(name = "entity_type", length = 50)
private String entityType;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelation.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelation.java
index 9aaf1e89b..2c4d07eb5 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelation.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelation.java
@@ -37,7 +37,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class FineractEntityRelation extends AbstractPersistableCustom {
+public class FineractEntityRelation extends AbstractPersistableCustom<Long> {
@OneToMany(cascade = CascadeType.ALL, mappedBy = "relationId", orphanRemoval = true)
private Set<FineractEntityToEntityMapping> fineractEntityToEntityMapping = new HashSet<>();
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityToEntityMapping.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityToEntityMapping.java
index 4ed6d7e61..382ed09c3 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityToEntityMapping.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityToEntityMapping.java
@@ -43,7 +43,7 @@ import org.apache.fineract.infrastructure.entityaccess.exception.FineractEntityT
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class FineractEntityToEntityMapping extends AbstractPersistableCustom {
+public class FineractEntityToEntityMapping extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "rel_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/DeviceRegistration.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/DeviceRegistration.java
index 63d2d9f26..6e13887b4 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/DeviceRegistration.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/DeviceRegistration.java
@@ -38,7 +38,7 @@ import org.apache.fineract.portfolio.client.domain.Client;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class DeviceRegistration extends AbstractPersistableCustom {
+public class DeviceRegistration extends AbstractPersistableCustom<Long> {
@OneToOne
@JoinColumn(name = "client_id", nullable = false, unique = true)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/HookConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/HookConfiguration.java
index e8f8dbc9f..013a59661 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/HookConfiguration.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/HookConfiguration.java
@@ -35,7 +35,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class HookConfiguration extends AbstractPersistableCustom {
+public class HookConfiguration extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false)
@JoinColumn(name = "hook_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/HookResource.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/HookResource.java
index 16bb09e25..c9074112f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/HookResource.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/HookResource.java
@@ -35,7 +35,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class HookResource extends AbstractPersistableCustom {
+public class HookResource extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false)
@JoinColumn(name = "hook_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/HookTemplate.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/HookTemplate.java
index 615373a66..ced927679 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/HookTemplate.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/HookTemplate.java
@@ -42,7 +42,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public final class HookTemplate extends AbstractPersistableCustom {
+public final class HookTemplate extends AbstractPersistableCustom<Long> {
@Column(name = "name", nullable = false, length = 100)
private String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/Schema.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/Schema.java
index 3cec6d1c9..c2c3ee98f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/Schema.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/Schema.java
@@ -35,7 +35,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class Schema extends AbstractPersistableCustom {
+public class Schema extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false)
@JoinColumn(name = "hook_template_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/CustomJobParameter.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/CustomJobParameter.java
index 607b3bc43..8f8da874b 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/CustomJobParameter.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/CustomJobParameter.java
@@ -31,7 +31,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@NoArgsConstructor
@Getter
@Setter
-public class CustomJobParameter extends AbstractPersistableCustom {
+public class CustomJobParameter extends AbstractPersistableCustom<Long> {
@Column(name = "parameter_json", nullable = false, columnDefinition = "json")
private String parameterJson;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/JobParameter.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/JobParameter.java
index 43110acb9..ebd806a33 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/JobParameter.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/JobParameter.java
@@ -34,7 +34,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class JobParameter extends AbstractPersistableCustom {
+public class JobParameter extends AbstractPersistableCustom<Long> {
@Column(name = "job_id", nullable = false)
private Long jobId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/ScheduledJobDetail.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/ScheduledJobDetail.java
index 6394af768..036b8536b 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/ScheduledJobDetail.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/ScheduledJobDetail.java
@@ -41,7 +41,7 @@ import org.apache.fineract.infrastructure.jobs.api.SchedulerJobApiConstants;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class ScheduledJobDetail extends AbstractPersistableCustom {
+public class ScheduledJobDetail extends AbstractPersistableCustom<Long> {
@Column(name = "name")
private String jobName;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/ScheduledJobRunHistory.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/ScheduledJobRunHistory.java
index f2bf4649e..bad0867f8 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/ScheduledJobRunHistory.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/ScheduledJobRunHistory.java
@@ -38,7 +38,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class ScheduledJobRunHistory extends AbstractPersistableCustom {
+public class ScheduledJobRunHistory extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "job_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/SchedulerDetail.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/SchedulerDetail.java
index 540ac4117..fcd3f41ca 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/SchedulerDetail.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/SchedulerDetail.java
@@ -33,7 +33,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class SchedulerDetail extends AbstractPersistableCustom {
+public class SchedulerDetail extends AbstractPersistableCustom<Long> {
@Column(name = "execute_misfired_jobs")
private boolean executeInstructionForMisfiredJobs;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobConfiguration.java
index 3958d9161..59296ee33 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobConfiguration.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobConfiguration.java
@@ -35,7 +35,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class ReportMailingJobConfiguration extends AbstractPersistableCustom {
+public class ReportMailingJobConfiguration extends AbstractPersistableCustom<Long> {
private static final long serialVersionUID = 3099279770861263184L;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobRunHistory.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobRunHistory.java
index 83a0f9f45..dd0598a19 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobRunHistory.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobRunHistory.java
@@ -36,7 +36,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class ReportMailingJobRunHistory extends AbstractPersistableCustom {
+public class ReportMailingJobRunHistory extends AbstractPersistableCustom<Long> {
private static final long serialVersionUID = -3757370929988421076L;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TFAccessToken.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TFAccessToken.java
index 5564fcbeb..1bb5e60e6 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TFAccessToken.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TFAccessToken.java
@@ -41,7 +41,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class TFAccessToken extends AbstractPersistableCustom {
+public class TFAccessToken extends AbstractPersistableCustom<Long> {
@Column(name = "token", nullable = false, length = 32)
private String token;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TwoFactorConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TwoFactorConfiguration.java
index 4f6de00b5..7b5109630 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TwoFactorConfiguration.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TwoFactorConfiguration.java
@@ -37,7 +37,7 @@ import org.apache.fineract.infrastructure.security.constants.TwoFactorConfigurat
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class TwoFactorConfiguration extends AbstractPersistableCustom {
+public class TwoFactorConfiguration extends AbstractPersistableCustom<Long> {
@Column(name = "name", nullable = false, length = 32)
private String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/domain/SmsMessage.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/domain/SmsMessage.java
index d46826f06..6e0ed867a 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/domain/SmsMessage.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/domain/SmsMessage.java
@@ -47,7 +47,7 @@ import org.apache.fineract.portfolio.group.domain.Group;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class SmsMessage extends AbstractPersistableCustom {
+public class SmsMessage extends AbstractPersistableCustom<Long> {
@Column(name = "external_id")
private String externalId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/domain/Likelihood.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/domain/Likelihood.java
index 330dfa064..360e48aa9 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/domain/Likelihood.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/domain/Likelihood.java
@@ -38,7 +38,7 @@ import org.apache.fineract.infrastructure.survey.data.LikelihoodStatus;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public final class Likelihood extends AbstractPersistableCustom {
+public final class Likelihood extends AbstractPersistableCustom<Long> {
@Column(name = "ppi_name", nullable = false)
private String ppiName;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/mix/domain/MixTaxonomyMapping.java b/fineract-provider/src/main/java/org/apache/fineract/mix/domain/MixTaxonomyMapping.java
index 514277f3a..dbeb13183 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/mix/domain/MixTaxonomyMapping.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/mix/domain/MixTaxonomyMapping.java
@@ -35,7 +35,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public final class MixTaxonomyMapping extends AbstractPersistableCustom {
+public final class MixTaxonomyMapping extends AbstractPersistableCustom<Long> {
@Column(name = "identifier")
private String identifier;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/domain/Notification.java b/fineract-provider/src/main/java/org/apache/fineract/notification/domain/Notification.java
index 78a549ab7..05888d1e2 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/notification/domain/Notification.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/notification/domain/Notification.java
@@ -34,7 +34,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class Notification extends AbstractPersistableCustom {
+public class Notification extends AbstractPersistableCustom<Long> {
@Column(name = "object_type")
private String objectType;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/domain/NotificationMapper.java b/fineract-provider/src/main/java/org/apache/fineract/notification/domain/NotificationMapper.java
index f38cccc76..a5137f199 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/notification/domain/NotificationMapper.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/notification/domain/NotificationMapper.java
@@ -37,7 +37,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
@Setter
@NoArgsConstructor
@Accessors(chain = true)
-public class NotificationMapper extends AbstractPersistableCustom {
+public class NotificationMapper extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "notification_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/OfficeTransaction.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/OfficeTransaction.java
index f44967c8b..c4e456eb4 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/OfficeTransaction.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/OfficeTransaction.java
@@ -34,7 +34,7 @@ import org.apache.fineract.organisation.monetary.domain.Money;
@Entity
@Table(name = "m_office_transaction")
-public class OfficeTransaction extends AbstractPersistableCustom {
+public class OfficeTransaction extends AbstractPersistableCustom<Long> {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "from_office_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/LoanProductProvisionCriteria.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/LoanProductProvisionCriteria.java
index de52516b1..14f4acf99 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/LoanProductProvisionCriteria.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/LoanProductProvisionCriteria.java
@@ -29,7 +29,7 @@ import org.apache.fineract.portfolio.loanproduct.domain.LoanProduct;
@Entity
@Table(name = "m_loanproduct_provisioning_mapping", uniqueConstraints = {
@UniqueConstraint(columnNames = { "product_id" }, name = "product_id") })
-public class LoanProductProvisionCriteria extends AbstractPersistableCustom {
+public class LoanProductProvisionCriteria extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false)
@JoinColumn(name = "criteria_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/ProvisioningCategory.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/ProvisioningCategory.java
index 2bdf82193..8e2ad1f51 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/ProvisioningCategory.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/ProvisioningCategory.java
@@ -29,7 +29,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_provision_category", uniqueConstraints = { @UniqueConstraint(columnNames = { "category_name" }, name = "category_name") })
-public class ProvisioningCategory extends AbstractPersistableCustom {
+public class ProvisioningCategory extends AbstractPersistableCustom<Long> {
@Column(name = "category_name", nullable = false, unique = true)
private String categoryName;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/ProvisioningCriteriaDefinition.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/ProvisioningCriteriaDefinition.java
index d557e8c9e..de5c3ac14 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/ProvisioningCriteriaDefinition.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/ProvisioningCriteriaDefinition.java
@@ -29,7 +29,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_provisioning_criteria_definition")
-public class ProvisioningCriteriaDefinition extends AbstractPersistableCustom {
+public class ProvisioningCriteriaDefinition extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false)
@JoinColumn(name = "criteria_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountAssociations.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountAssociations.java
index ee7d5439b..15e83161d 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountAssociations.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountAssociations.java
@@ -29,7 +29,7 @@ import org.apache.fineract.portfolio.savings.domain.SavingsAccount;
@Entity
@Table(name = "m_portfolio_account_associations")
-public class AccountAssociations extends AbstractPersistableCustom {
+public class AccountAssociations extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "loan_account_id", nullable = true)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferDetails.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferDetails.java
index a57262422..ff9b535a2 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferDetails.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferDetails.java
@@ -37,7 +37,7 @@ import org.apache.fineract.portfolio.savings.domain.SavingsAccount;
@Entity
@Table(name = "m_account_transfer_details")
-public class AccountTransferDetails extends AbstractPersistableCustom {
+public class AccountTransferDetails extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "from_office_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferStandingInstruction.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferStandingInstruction.java
index d528c23e6..fb4373087 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferStandingInstruction.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferStandingInstruction.java
@@ -54,7 +54,7 @@ import org.apache.fineract.portfolio.common.domain.PeriodFrequencyType;
@Entity
@Table(name = "m_account_transfer_standing_instructions", uniqueConstraints = {
@UniqueConstraint(columnNames = { "name" }, name = "name") })
-public class AccountTransferStandingInstruction extends AbstractPersistableCustom {
+public class AccountTransferStandingInstruction extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "account_transfer_details_id", nullable = true)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferTransaction.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferTransaction.java
index cb6608741..6b0cf1553 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferTransaction.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferTransaction.java
@@ -36,7 +36,7 @@ import org.apache.fineract.portfolio.savings.domain.SavingsAccountTransaction;
@Entity
@Table(name = "m_account_transfer_transaction")
@Getter
-public class AccountTransferTransaction extends AbstractPersistableCustom {
+public class AccountTransferTransaction extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "account_transfer_details_id", nullable = true)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/domain/Address.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/domain/Address.java
index 7405b3344..a3a3026fc 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/domain/Address.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/domain/Address.java
@@ -37,7 +37,7 @@ import org.apache.fineract.portfolio.client.domain.ClientAddress;
@Entity
@Table(name = "m_address")
-public class Address extends AbstractPersistableCustom {
+public class Address extends AbstractPersistableCustom<Long> {
/*
* @OneToMany(mappedBy = "address", cascade = CascadeType.ALL) private List<ClientAddress> clientaddress = new
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/domain/FieldConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/domain/FieldConfiguration.java
index f73516adc..30c01c0b6 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/domain/FieldConfiguration.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/domain/FieldConfiguration.java
@@ -24,7 +24,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_field_configuration")
-public class FieldConfiguration extends AbstractPersistableCustom {
+public class FieldConfiguration extends AbstractPersistableCustom<Long> {
private String entity;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientAddress.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientAddress.java
index ab0f04c69..ceb905150 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientAddress.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientAddress.java
@@ -29,7 +29,7 @@ import org.apache.fineract.portfolio.address.domain.Address;
@Entity
@Table(name = "m_client_address")
-public class ClientAddress extends AbstractPersistableCustom {
+public class ClientAddress extends AbstractPersistableCustom<Long> {
@ManyToOne
private Client client;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientCharge.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientCharge.java
index 0b774946f..237e094fc 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientCharge.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientCharge.java
@@ -38,7 +38,7 @@ import org.apache.fineract.portfolio.client.api.ClientApiConstants;
@Entity
@Table(name = "m_client_charge")
-public class ClientCharge extends AbstractPersistableCustom {
+public class ClientCharge extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false)
@JoinColumn(name = "client_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientChargePaidBy.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientChargePaidBy.java
index b622b0c3d..435d37305 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientChargePaidBy.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientChargePaidBy.java
@@ -28,7 +28,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_client_charge_paid_by")
-public class ClientChargePaidBy extends AbstractPersistableCustom {
+public class ClientChargePaidBy extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "client_transaction_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientFamilyMembers.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientFamilyMembers.java
index 692087018..5517b42a5 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientFamilyMembers.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientFamilyMembers.java
@@ -30,7 +30,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_family_members")
-public class ClientFamilyMembers extends AbstractPersistableCustom {
+public class ClientFamilyMembers extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "client_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientNonPerson.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientNonPerson.java
index b4367a3bb..776421985 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientNonPerson.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientNonPerson.java
@@ -41,7 +41,7 @@ import org.apache.fineract.portfolio.client.api.ClientApiConstants;
@Entity
@Table(name = "m_client_non_person")
-public class ClientNonPerson extends AbstractPersistableCustom {
+public class ClientNonPerson extends AbstractPersistableCustom<Long> {
@OneToOne(optional = false)
@JoinColumn(name = "client_id", referencedColumnName = "id", nullable = false, unique = true)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransaction.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransaction.java
index b7b29906b..d8828238d 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransaction.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransaction.java
@@ -49,7 +49,7 @@ import org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail;
@Entity
@Table(name = "m_client_transaction", uniqueConstraints = { @UniqueConstraint(columnNames = { "external_id" }, name = "external_id") })
-public class ClientTransaction extends AbstractAuditableWithUTCDateTimeCustom {
+public class ClientTransaction extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne(optional = false)
@JoinColumn(name = "client_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransferDetails.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransferDetails.java
index 6690f78b4..f5c114429 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransferDetails.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransferDetails.java
@@ -28,7 +28,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@SuppressWarnings("serial")
@Entity
@Table(name = "m_client_transfer_details")
-public class ClientTransferDetails extends AbstractPersistableCustom {
+public class ClientTransferDetails extends AbstractPersistableCustom<Long> {
@Column(name = "client_id", length = 20, unique = true, nullable = false)
private Long clientId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/Guarantor.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/Guarantor.java
index fc020b5df..8b734bb76 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/Guarantor.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/Guarantor.java
@@ -40,7 +40,7 @@ import org.apache.fineract.portfolio.loanaccount.guarantor.GuarantorConstants.Gu
@Entity
@Table(name = "m_guarantor")
-public class Guarantor extends AbstractPersistableCustom {
+public class Guarantor extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "loan_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/GuarantorFundingDetails.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/GuarantorFundingDetails.java
index 636181224..9b0260917 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/GuarantorFundingDetails.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/GuarantorFundingDetails.java
@@ -36,7 +36,7 @@ import org.apache.fineract.portfolio.savings.domain.SavingsAccount;
@Entity
@Table(name = "m_guarantor_funding_details")
-public class GuarantorFundingDetails extends AbstractPersistableCustom {
+public class GuarantorFundingDetails extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "guarantor_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/GuarantorFundingTransaction.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/GuarantorFundingTransaction.java
index 1017e04d6..d46aaf17e 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/GuarantorFundingTransaction.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/GuarantorFundingTransaction.java
@@ -31,7 +31,7 @@ import org.apache.fineract.portfolio.savings.domain.DepositAccountOnHoldTransact
@Entity
@Table(name = "m_guarantor_transaction")
-public class GuarantorFundingTransaction extends AbstractPersistableCustom {
+public class GuarantorFundingTransaction extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "guarantor_fund_detail_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/productmix/domain/ProductMix.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/productmix/domain/ProductMix.java
index 2f51c61cf..967f43508 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/productmix/domain/ProductMix.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/productmix/domain/ProductMix.java
@@ -27,7 +27,7 @@ import org.apache.fineract.portfolio.loanproduct.domain.LoanProduct;
@Entity
@Table(name = "m_product_mix")
-public class ProductMix extends AbstractPersistableCustom {
+public class ProductMix extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "product_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/attendance/domain/ClientAttendance.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/attendance/domain/ClientAttendance.java
index 07d618e98..2faef56ef 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/attendance/domain/ClientAttendance.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/attendance/domain/ClientAttendance.java
@@ -31,7 +31,7 @@ import org.apache.fineract.portfolio.meeting.domain.Meeting;
@Entity
@Table(name = "m_client_attendance", uniqueConstraints = {
@UniqueConstraint(columnNames = { "client_id", "meeting_id" }, name = "unique_client_meeting_attendance") })
-public class ClientAttendance extends AbstractPersistableCustom {
+public class ClientAttendance extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "client_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/domain/Meeting.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/domain/Meeting.java
index 3a758d813..e3624f68c 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/domain/Meeting.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/domain/Meeting.java
@@ -51,7 +51,7 @@ import org.apache.fineract.portfolio.meeting.exception.MeetingDateException;
@Entity
@Table(name = "m_meeting", uniqueConstraints = {
@UniqueConstraint(columnNames = { "calendar_instance_id", "meeting_date" }, name = "unique_calendar_instance_id_meeting_date") })
-public class Meeting extends AbstractPersistableCustom {
+public class Meeting extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "calendar_instance_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/domain/Note.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/domain/Note.java
index a02b5dd51..ecc28837f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/domain/Note.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/domain/Note.java
@@ -38,7 +38,7 @@ import org.apache.fineract.portfolio.shareaccounts.domain.ShareAccount;
@Entity
@Table(name = "m_note")
-public class Note extends AbstractAuditableWithUTCDateTimeCustom {
+public class Note extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne
@JoinColumn(name = "client_id", nullable = true)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountRecurringDetail.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountRecurringDetail.java
index 564ae9915..6f659759d 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountRecurringDetail.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountRecurringDetail.java
@@ -43,7 +43,7 @@ import org.apache.fineract.portfolio.savings.DepositsApiConstants;
@Entity
@Table(name = "m_deposit_account_recurring_detail")
-public class DepositAccountRecurringDetail extends AbstractPersistableCustom {
+public class DepositAccountRecurringDetail extends AbstractPersistableCustom<Long> {
@Column(name = "mandatory_recommended_deposit_amount", scale = 6, precision = 19, nullable = true)
private BigDecimal mandatoryRecommendedDepositAmount;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositScheduleInstallment.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositScheduleInstallment.java
index eef970f8d..5527708b2 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositScheduleInstallment.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositScheduleInstallment.java
@@ -37,7 +37,7 @@ import org.apache.fineract.organisation.monetary.domain.Money;
@Entity
@Table(name = "m_mandatory_savings_schedule")
-public class RecurringDepositScheduleInstallment extends AbstractAuditableWithUTCDateTimeCustom {
+public class RecurringDepositScheduleInstallment extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne(optional = false)
@JoinColumn(name = "savings_account_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/domain/SelfBeneficiariesTPT.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/domain/SelfBeneficiariesTPT.java
index ce7a72235..637da888f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/domain/SelfBeneficiariesTPT.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/domain/SelfBeneficiariesTPT.java
@@ -32,7 +32,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_selfservice_beneficiaries_tpt", uniqueConstraints = {
@UniqueConstraint(columnNames = { "name", "app_user_id", "is_active" }, name = "name") })
-public class SelfBeneficiariesTPT extends AbstractPersistableCustom {
+public class SelfBeneficiariesTPT extends AbstractPersistableCustom<Long> {
@Column(name = "app_user_id", nullable = false)
private Long appUserId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/domain/Pocket.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/domain/Pocket.java
index 1694d733e..ba3b56192 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/domain/Pocket.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/domain/Pocket.java
@@ -28,7 +28,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@SuppressWarnings("serial")
@Entity
@Table(name = "m_pocket", uniqueConstraints = { @UniqueConstraint(columnNames = { "app_user_id" }, name = "unique_app_user") })
-public class Pocket extends AbstractPersistableCustom {
+public class Pocket extends AbstractPersistableCustom<Long> {
@Column(name = "app_user_id", length = 20, nullable = false)
private Long appUserId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/domain/PocketAccountMapping.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/domain/PocketAccountMapping.java
index 90976d45a..9fa080dca 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/domain/PocketAccountMapping.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/domain/PocketAccountMapping.java
@@ -27,7 +27,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@SuppressWarnings("serial")
@Entity
@Table(name = "m_pocket_accounts_mapping")
-public class PocketAccountMapping extends AbstractPersistableCustom {
+public class PocketAccountMapping extends AbstractPersistableCustom<Long> {
@Column(name = "pocket_id", length = 20, nullable = false)
private Long pocketId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/registration/domain/SelfServiceRegistration.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/registration/domain/SelfServiceRegistration.java
index 84155f947..1be371b00 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/registration/domain/SelfServiceRegistration.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/registration/domain/SelfServiceRegistration.java
@@ -30,7 +30,7 @@ import org.apache.fineract.portfolio.client.domain.Client;
@Entity
@Table(name = "request_audit_table")
-public class SelfServiceRegistration extends AbstractPersistableCustom {
+public class SelfServiceRegistration extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "client_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccount.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccount.java
index 8662e9d6d..ee231b701 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccount.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccount.java
@@ -47,7 +47,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
@Entity
@Table(name = "m_share_account")
-public class ShareAccount extends AbstractPersistableCustom {
+public class ShareAccount extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "client_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountCharge.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountCharge.java
index 309522177..79953b34d 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountCharge.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountCharge.java
@@ -35,7 +35,7 @@ import org.apache.fineract.portfolio.charge.domain.ChargeTimeType;
@Entity
@Table(name = "m_share_account_charge")
-public class ShareAccountCharge extends AbstractPersistableCustom {
+public class ShareAccountCharge extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false)
@JoinColumn(name = "account_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountChargePaidBy.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountChargePaidBy.java
index 72dd432a4..0911cd060 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountChargePaidBy.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountChargePaidBy.java
@@ -28,7 +28,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_share_account_charge_paid_by")
-public class ShareAccountChargePaidBy extends AbstractPersistableCustom {
+public class ShareAccountChargePaidBy extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false)
@JoinColumn(name = "share_transaction_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountDividendDetails.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountDividendDetails.java
index 96d4b9102..aba53679f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountDividendDetails.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountDividendDetails.java
@@ -29,7 +29,7 @@ import org.apache.fineract.portfolio.shareproducts.domain.ShareProductDividendPa
@Entity
@Table(name = "m_share_account_dividend_details")
-public class ShareAccountDividendDetails extends AbstractPersistableCustom {
+public class ShareAccountDividendDetails extends AbstractPersistableCustom<Long> {
@Column(name = "account_id", nullable = false)
private Long shareAccountId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountTransaction.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountTransaction.java
index f54511ca3..af21e9cab 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountTransaction.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountTransaction.java
@@ -34,7 +34,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_share_account_transactions")
-public class ShareAccountTransaction extends AbstractPersistableCustom {
+public class ShareAccountTransaction extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false)
@JoinColumn(name = "account_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductMarketPrice.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductMarketPrice.java
index 51ce43dd9..dd6dd9000 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductMarketPrice.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductMarketPrice.java
@@ -29,7 +29,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_share_product_market_price")
-public class ShareProductMarketPrice extends AbstractPersistableCustom {
+public class ShareProductMarketPrice extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false)
@JoinColumn(name = "product_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Component.java b/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Component.java
index 0496cb66d..433b0e68f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Component.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Component.java
@@ -28,7 +28,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_survey_components")
-public class Component extends AbstractPersistableCustom {
+public class Component extends AbstractPersistableCustom<Long> {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "survey_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/spm/domain/LookupTable.java b/fineract-provider/src/main/java/org/apache/fineract/spm/domain/LookupTable.java
index b1c28ac0d..089794326 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/spm/domain/LookupTable.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/spm/domain/LookupTable.java
@@ -28,7 +28,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_survey_lookup_tables")
-public class LookupTable extends AbstractPersistableCustom {
+public class LookupTable extends AbstractPersistableCustom<Long> {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "survey_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Question.java b/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Question.java
index 7f6ae1dbe..df199bb19 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Question.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Question.java
@@ -32,7 +32,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_survey_questions")
-public class Question extends AbstractPersistableCustom {
+public class Question extends AbstractPersistableCustom<Long> {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "survey_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Response.java b/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Response.java
index 97d259d4f..16416c914 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Response.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Response.java
@@ -28,7 +28,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_survey_responses")
-public class Response extends AbstractPersistableCustom {
+public class Response extends AbstractPersistableCustom<Long> {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "question_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Scorecard.java b/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Scorecard.java
index 87bc4f8da..77c8e3d7f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Scorecard.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Scorecard.java
@@ -32,7 +32,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
@Entity
@Table(name = "m_survey_scorecards")
-public class Scorecard extends AbstractPersistableCustom {
+public class Scorecard extends AbstractPersistableCustom<Long> {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "survey_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Survey.java b/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Survey.java
index d1c01e773..a49cc25d2 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Survey.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Survey.java
@@ -32,7 +32,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_surveys")
-public class Survey extends AbstractPersistableCustom {
+public class Survey extends AbstractPersistableCustom<Long> {
@OneToMany(mappedBy = "survey", fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
@OrderBy("sequenceNo")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/template/domain/Template.java b/fineract-provider/src/main/java/org/apache/fineract/template/domain/Template.java
index 82113ae33..9ddd970a2 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/template/domain/Template.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/template/domain/Template.java
@@ -41,7 +41,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_template", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "unq_name") })
-public class Template extends AbstractPersistableCustom {
+public class Template extends AbstractPersistableCustom<Long> {
@Column(name = "name", nullable = false, unique = true)
private String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/template/domain/TemplateMapper.java b/fineract-provider/src/main/java/org/apache/fineract/template/domain/TemplateMapper.java
index 1d0ddab02..ef1fb7870 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/template/domain/TemplateMapper.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/template/domain/TemplateMapper.java
@@ -25,7 +25,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_templatemappers")
-public class TemplateMapper extends AbstractPersistableCustom {
+public class TemplateMapper extends AbstractPersistableCustom<Long> {
@Column(name = "mapperorder")
private int mapperorder;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUserPreviousPassword.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUserPreviousPassword.java
index b15142128..f059921f9 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUserPreviousPassword.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUserPreviousPassword.java
@@ -27,7 +27,7 @@ import org.apache.fineract.infrastructure.core.service.DateUtils;
@Entity
@Table(name = "m_appuser_previous_password")
-public class AppUserPreviousPassword extends AbstractPersistableCustom {
+public class AppUserPreviousPassword extends AbstractPersistableCustom<Long> {
@Column(name = "user_id", nullable = false)
private Long userId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/PasswordValidationPolicy.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/PasswordValidationPolicy.java
index b31b2782b..507bb27f6 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/PasswordValidationPolicy.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/PasswordValidationPolicy.java
@@ -27,7 +27,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_password_validation_policy")
-public class PasswordValidationPolicy extends AbstractPersistableCustom {
+public class PasswordValidationPolicy extends AbstractPersistableCustom<Long> {
@Column(name = "regex", nullable = false)
private String regex;
diff --git a/fineract-provider/src/test/java/org/apache/fineract/commands/service/SynchronousCommandProcessingServiceTest.java b/fineract-provider/src/test/java/org/apache/fineract/commands/service/SynchronousCommandProcessingServiceTest.java
index 361d0361e..ed4f42366 100644
--- a/fineract-provider/src/test/java/org/apache/fineract/commands/service/SynchronousCommandProcessingServiceTest.java
+++ b/fineract-provider/src/test/java/org/apache/fineract/commands/service/SynchronousCommandProcessingServiceTest.java
@@ -142,6 +142,7 @@ public class SynchronousCommandProcessingServiceTest {
NewCommandSourceHandler commandHandler = Mockito.mock(NewCommandSourceHandler.class);
CommandProcessingResult commandProcessingResult = Mockito.mock(CommandProcessingResult.class);
CommandSource commandSource = Mockito.mock(CommandSource.class);
+ when(commandSource.getId()).thenReturn(1L);
when(commandProcessingResult.isRollbackTransaction()).thenReturn(false);
RuntimeException runtimeException = new RuntimeException("foo");
when(commandHandler.processCommand(jsonCommand)).thenThrow(runtimeException);
@@ -154,6 +155,7 @@ public class SynchronousCommandProcessingServiceTest {
when(commandSourceService.getCommandSource(commandId)).thenReturn(commandSource);
AppUser appUser = Mockito.mock(AppUser.class);
+ when(appUser.getId()).thenReturn(1L);
when(context.authenticatedUser(Mockito.any(CommandWrapper.class))).thenReturn(appUser);
when(commandSourceService.saveInitialNewTransaction(commandWrapper, jsonCommand, appUser, idk)).thenReturn(commandSource);
diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/auditing/CustomAuditingHandlerTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/auditing/CustomAuditingHandlerTest.java
index 52844609d..a53cab463 100644
--- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/auditing/CustomAuditingHandlerTest.java
+++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/auditing/CustomAuditingHandlerTest.java
@@ -58,7 +58,7 @@ public class CustomAuditingHandlerTest {
public void markCreated() {
MappingContext mappingContext = Mockito.mock(MappingContext.class);
CustomAuditingHandler testInstance = new CustomAuditingHandler(PersistentEntities.of(mappingContext));
- AbstractAuditableWithUTCDateTimeCustom targetObject = Mockito.spy(AbstractAuditableWithUTCDateTimeCustom.class);
+ AbstractAuditableWithUTCDateTimeCustom<Long> targetObject = Mockito.spy(AbstractAuditableWithUTCDateTimeCustom.class);
targetObject = testInstance.markCreated(targetObject);
OffsetDateTime now = DateUtils.getAuditOffsetDateTime();
@@ -74,7 +74,7 @@ public class CustomAuditingHandlerTest {
public void markModified() {
MappingContext mappingContext = Mockito.mock(MappingContext.class);
CustomAuditingHandler testInstance = new CustomAuditingHandler(PersistentEntities.of(mappingContext));
- AbstractAuditableWithUTCDateTimeCustom targetObject = Mockito.spy(AbstractAuditableWithUTCDateTimeCustom.class);
+ AbstractAuditableWithUTCDateTimeCustom<Long> targetObject = Mockito.spy(AbstractAuditableWithUTCDateTimeCustom.class);
targetObject = testInstance.markModified(targetObject);
OffsetDateTime now = DateUtils.getAuditOffsetDateTime();
diff --git a/fineract-provider/src/test/java/org/apache/fineract/portfolio/deliquency/DelinquencyWritePlatformServiceRangeChangeEventTest.java b/fineract-provider/src/test/java/org/apache/fineract/portfolio/deliquency/DelinquencyWritePlatformServiceRangeChangeEventTest.java
index 83fc04103..0a9945675 100644
--- a/fineract-provider/src/test/java/org/apache/fineract/portfolio/deliquency/DelinquencyWritePlatformServiceRangeChangeEventTest.java
+++ b/fineract-provider/src/test/java/org/apache/fineract/portfolio/deliquency/DelinquencyWritePlatformServiceRangeChangeEventTest.java
@@ -572,6 +572,7 @@ public class DelinquencyWritePlatformServiceRangeChangeEventTest {
.forClass(LoanDelinquencyRangeChangeBusinessEvent.class);
// given
Loan loanForProcessing = Mockito.mock(Loan.class);
+ when(loanForProcessing.getId()).thenReturn(1L);
DelinquencyRange range1 = DelinquencyRange.instance("Range1", 1, 2);
range1.setId(1L);
DelinquencyRange range2 = DelinquencyRange.instance("Range30", 3, 30);
@@ -603,7 +604,7 @@ public class DelinquencyWritePlatformServiceRangeChangeEventTest {
.forClass(LoanAccountDelinquencyPauseChangedBusinessEvent.class);
// given
Loan loanForProcessing = Mockito.mock(Loan.class);
- loanForProcessing.setId(1L);
+ when(loanForProcessing.getId()).thenReturn(1L);
JsonCommand command = Mockito.mock(JsonCommand.class);
@@ -654,7 +655,7 @@ public class DelinquencyWritePlatformServiceRangeChangeEventTest {
.forClass(LoanDelinquencyRangeChangeBusinessEvent.class);
// given
Loan loanForProcessing = Mockito.mock(Loan.class);
- loanForProcessing.setId(1L);
+ when(loanForProcessing.getId()).thenReturn(1L);
JsonCommand command = Mockito.mock(JsonCommand.class);
diff --git a/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRate.java b/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRate.java
index 3091f4513..630dddc21 100644
--- a/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRate.java
+++ b/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRate.java
@@ -46,7 +46,7 @@ import org.apache.fineract.portfolio.floatingrates.data.FloatingRatePeriodData;
@Entity
@Table(name = "m_floating_rates", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "unq_name") })
-public class FloatingRate extends AbstractAuditableWithUTCDateTimeCustom {
+public class FloatingRate extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@Column(name = "name", length = 200, unique = true, nullable = false)
private String name;
diff --git a/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRatePeriod.java b/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRatePeriod.java
index 2ba816dfe..c6b560514 100644
--- a/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRatePeriod.java
+++ b/fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRatePeriod.java
@@ -31,7 +31,7 @@ import org.apache.fineract.portfolio.floatingrates.data.FloatingRatePeriodData;
@Entity
@Table(name = "m_floating_rates_periods")
-public class FloatingRatePeriod extends AbstractAuditableWithUTCDateTimeCustom {
+public class FloatingRatePeriod extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne
@JoinColumn(name = "floating_rates_id", nullable = false)
diff --git a/fineract-savings/src/main/java/org/apache/fineract/interoperation/domain/InteropIdentifier.java b/fineract-savings/src/main/java/org/apache/fineract/interoperation/domain/InteropIdentifier.java
index 170b41a77..46950b344 100644
--- a/fineract-savings/src/main/java/org/apache/fineract/interoperation/domain/InteropIdentifier.java
+++ b/fineract-savings/src/main/java/org/apache/fineract/interoperation/domain/InteropIdentifier.java
@@ -43,7 +43,7 @@ import org.apache.fineract.portfolio.savings.domain.SavingsAccount;
@Table(name = "interop_identifier", uniqueConstraints = {
@UniqueConstraint(name = "uk_hathor_identifier_account", columnNames = { "account_id", "type" }),
@UniqueConstraint(name = "uk_hathor_identifier_value", columnNames = { "type", "a_value", "sub_value_or_type" }) })
-public class InteropIdentifier extends AbstractPersistableCustom {
+public class InteropIdentifier extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false)
@JoinColumn(name = "account_id", nullable = false)
diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestIncentives.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestIncentives.java
index de3ae88f1..3822b8f60 100644
--- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestIncentives.java
+++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestIncentives.java
@@ -31,7 +31,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_interest_incentives")
-public class InterestIncentives extends AbstractPersistableCustom {
+public class InterestIncentives extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "interest_rate_slab_id", nullable = false)
diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChart.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChart.java
index 974aea510..a49230b91 100644
--- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChart.java
+++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChart.java
@@ -58,7 +58,7 @@ import org.apache.fineract.portfolio.savings.SavingsPeriodFrequencyType;
@Entity
@Table(name = "m_interest_rate_chart")
-public class InterestRateChart extends AbstractPersistableCustom {
+public class InterestRateChart extends AbstractPersistableCustom<Long> {
@Embedded
private InterestRateChartFields chartFields;
diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlab.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlab.java
index 5673384d8..74e963845 100644
--- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlab.java
+++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlab.java
@@ -56,7 +56,7 @@ import org.apache.fineract.portfolio.interestratechart.InterestRateChartSlabApiC
@Entity
@Table(name = "m_interest_rate_slab")
-public class InterestRateChartSlab extends AbstractPersistableCustom {
+public class InterestRateChartSlab extends AbstractPersistableCustom<Long> {
@Embedded
private InterestRateChartSlabFields slabFields;
diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestIncentive.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestIncentive.java
index 5c9eb2b69..a71763352 100755
--- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestIncentive.java
+++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestIncentive.java
@@ -28,7 +28,7 @@ import org.apache.fineract.portfolio.interestratechart.domain.InterestIncentives
@Entity
@Table(name = "m_deposit_account_interest_incentives")
-public class DepositAccountInterestIncentive extends AbstractPersistableCustom {
+public class DepositAccountInterestIncentive extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "deposit_account_interest_rate_slab_id", nullable = false)
diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestIncentives.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestIncentives.java
index 1a5793b07..c45f1ad1a 100755
--- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestIncentives.java
+++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestIncentives.java
@@ -28,7 +28,7 @@ import org.apache.fineract.portfolio.interestratechart.domain.InterestIncentives
@Entity
@Table(name = "m_savings_interest_incentives")
-public class DepositAccountInterestIncentives extends AbstractPersistableCustom {
+public class DepositAccountInterestIncentives extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "deposit_account_interest_rate_slab_id", nullable = false)
diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestRateChart.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestRateChart.java
index 36a2358aa..4e2e1389f 100644
--- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestRateChart.java
+++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestRateChart.java
@@ -41,7 +41,7 @@ import org.apache.fineract.portfolio.interestratechart.incentive.IncentiveDTO;
@Entity
@Table(name = "m_savings_account_interest_rate_chart")
-public class DepositAccountInterestRateChart extends AbstractPersistableCustom {
+public class DepositAccountInterestRateChart extends AbstractPersistableCustom<Long> {
@Embedded
private InterestRateChartFields chartFields;
diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestRateChartSlabs.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestRateChartSlabs.java
index d8ab649f1..119185a99 100644
--- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestRateChartSlabs.java
+++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestRateChartSlabs.java
@@ -35,7 +35,7 @@ import org.apache.fineract.portfolio.interestratechart.domain.InterestRateChartS
@Entity
@Table(name = "m_savings_account_interest_rate_slab")
-public class DepositAccountInterestRateChartSlabs extends AbstractPersistableCustom {
+public class DepositAccountInterestRateChartSlabs extends AbstractPersistableCustom<Long> {
@Embedded
private InterestRateChartSlabFields slabFields;
diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountOnHoldTransaction.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountOnHoldTransaction.java
index cb132e419..fa57491e3 100644
--- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountOnHoldTransaction.java
+++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountOnHoldTransaction.java
@@ -37,7 +37,7 @@ import org.apache.fineract.portfolio.savings.DepositAccountOnHoldTransactionType
@Entity
@Table(name = "m_deposit_account_on_hold_transaction")
-public class DepositAccountOnHoldTransaction extends AbstractAuditableWithUTCDateTimeCustom {
+public class DepositAccountOnHoldTransaction extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne
@JoinColumn(name = "savings_account_id", nullable = true)
diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountTermAndPreClosure.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountTermAndPreClosure.java
index 64553b3b4..31240765d 100644
--- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountTermAndPreClosure.java
+++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountTermAndPreClosure.java
@@ -49,7 +49,7 @@ import org.apache.fineract.portfolio.savings.service.SavingsEnumerations;
@Entity
@Table(name = "m_deposit_account_term_and_preclosure")
-public class DepositAccountTermAndPreClosure extends AbstractPersistableCustom {
+public class DepositAccountTermAndPreClosure extends AbstractPersistableCustom<Long> {
@Column(name = "deposit_amount", scale = 6, precision = 19, nullable = true)
private BigDecimal depositAmount;
diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductRecurringDetail.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductRecurringDetail.java
index 0d12977c5..8d2d5c64b 100644
--- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductRecurringDetail.java
+++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductRecurringDetail.java
@@ -30,7 +30,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_deposit_product_recurring_detail")
-public class DepositProductRecurringDetail extends AbstractPersistableCustom {
+public class DepositProductRecurringDetail extends AbstractPersistableCustom<Long> {
@Embedded
private DepositRecurringDetail recurringDetail;
diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductTermAndPreClosure.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductTermAndPreClosure.java
index cf9c8cab2..ab5cd8522 100644
--- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductTermAndPreClosure.java
+++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductTermAndPreClosure.java
@@ -31,7 +31,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_deposit_product_term_and_preclosure")
-public class DepositProductTermAndPreClosure extends AbstractPersistableCustom {
+public class DepositProductTermAndPreClosure extends AbstractPersistableCustom<Long> {
@Embedded
private DepositPreClosureDetail preClosureDetail;
diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/GroupSavingsIndividualMonitoring.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/GroupSavingsIndividualMonitoring.java
index 611359051..d54060338 100644
--- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/GroupSavingsIndividualMonitoring.java
+++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/GroupSavingsIndividualMonitoring.java
@@ -33,7 +33,7 @@ import org.apache.fineract.portfolio.group.domain.Group;
@Entity
@Table(name = "gsim_accounts", uniqueConstraints = { @UniqueConstraint(columnNames = { "account_number" }, name = "gsim_id") })
-public final class GroupSavingsIndividualMonitoring extends AbstractPersistableCustom {
+public final class GroupSavingsIndividualMonitoring extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "group_id", nullable = false)
diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java
index 61a067910..bfd94a1ea 100644
--- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java
+++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java
@@ -134,7 +134,7 @@ import org.springframework.util.CollectionUtils;
@DiscriminatorColumn(name = "deposit_type_enum", discriminatorType = DiscriminatorType.INTEGER)
@DiscriminatorValue("100")
@SuppressWarnings({ "MemberName" })
-public class SavingsAccount extends AbstractAuditableWithUTCDateTimeCustom {
+public class SavingsAccount extends AbstractAuditableWithUTCDateTimeCustom<Long> {
private static final Logger LOG = LoggerFactory.getLogger(SavingsAccount.class);
@@ -1645,13 +1645,11 @@ public class SavingsAccount extends AbstractAuditableWithUTCDateTimeCustom {
actualChanges.put(SavingsApiConstants.dateFormatParamName, dateFormat);
this.submittedOnDate = command.localDateValueOfParameterNamed(SavingsApiConstants.submittedOnDateParamName);
}
-
if (command.isChangeInStringParameterNamed(SavingsApiConstants.accountNoParamName, this.accountNumber)) {
final String newValue = command.stringValueOfParameterNamed(SavingsApiConstants.accountNoParamName);
actualChanges.put(SavingsApiConstants.accountNoParamName, newValue);
this.accountNumber = StringUtils.defaultIfEmpty(newValue, null);
}
-
if (command.isChangeInStringParameterNamed(SavingsApiConstants.externalIdParamName, this.externalId.getValue())) {
final String newValue = command.stringValueOfParameterNamed(SavingsApiConstants.externalIdParamName);
actualChanges.put(SavingsApiConstants.externalIdParamName, newValue);
@@ -1660,35 +1658,28 @@ public class SavingsAccount extends AbstractAuditableWithUTCDateTimeCustom {
this.externalId = ExternalId.generate();
}
}
-
if (command.isChangeInLongParameterNamed(SavingsApiConstants.clientIdParamName, clientId())) {
final Long newValue = command.longValueOfParameterNamed(SavingsApiConstants.clientIdParamName);
actualChanges.put(SavingsApiConstants.clientIdParamName, newValue);
}
-
if (command.isChangeInLongParameterNamed(SavingsApiConstants.groupIdParamName, groupId())) {
final Long newValue = command.longValueOfParameterNamed(SavingsApiConstants.groupIdParamName);
actualChanges.put(SavingsApiConstants.groupIdParamName, newValue);
}
-
if (command.isChangeInLongParameterNamed(SavingsApiConstants.productIdParamName, this.product.getId())) {
final Long newValue = command.longValueOfParameterNamed(SavingsApiConstants.productIdParamName);
actualChanges.put(SavingsApiConstants.productIdParamName, newValue);
}
-
if (command.isChangeInLongParameterNamed(SavingsApiConstants.fieldOfficerIdParamName, hasSavingsOfficerId())) {
final Long newValue = command.longValueOfParameterNamed(SavingsApiConstants.fieldOfficerIdParamName);
actualChanges.put(SavingsApiConstants.fieldOfficerIdParamName, newValue);
}
-
if (command.isChangeInBigDecimalParameterNamed(SavingsApiConstants.nominalAnnualInterestRateParamName,
this.nominalAnnualInterestRate)) {
final BigDecimal newValue = command.bigDecimalValueOfParameterNamed(SavingsApiConstants.nominalAnnualInterestRateParamName);
actualChanges.put(SavingsApiConstants.nominalAnnualInterestRateParamName, newValue);
- actualChanges.put("locale", localeAsInput);
this.nominalAnnualInterestRate = newValue;
}
-
if (command.isChangeInIntegerParameterNamed(SavingsApiConstants.interestCompoundingPeriodTypeParamName,
this.interestCompoundingPeriodType)) {
final Integer newValue = command.integerValueOfParameterNamed(SavingsApiConstants.interestCompoundingPeriodTypeParamName);
@@ -1696,20 +1687,17 @@ public class SavingsAccount extends AbstractAuditableWithUTCDateTimeCustom {
: newValue;
actualChanges.put(SavingsApiConstants.interestCompoundingPeriodTypeParamName, this.interestCompoundingPeriodType);
}
-
if (command.isChangeInIntegerParameterNamed(SavingsApiConstants.interestPostingPeriodTypeParamName,
this.interestPostingPeriodType)) {
final Integer newValue = command.integerValueOfParameterNamed(SavingsApiConstants.interestPostingPeriodTypeParamName);
this.interestPostingPeriodType = newValue != null ? SavingsPostingInterestPeriodType.fromInt(newValue).getValue() : newValue;
actualChanges.put(SavingsApiConstants.interestPostingPeriodTypeParamName, this.interestPostingPeriodType);
}
-
if (command.isChangeInIntegerParameterNamed(SavingsApiConstants.interestCalculationTypeParamName, this.interestCalculationType)) {
final Integer newValue = command.integerValueOfParameterNamed(SavingsApiConstants.interestCalculationTypeParamName);
this.interestCalculationType = newValue != null ? SavingsInterestCalculationType.fromInt(newValue).getValue() : newValue;
actualChanges.put(SavingsApiConstants.interestCalculationTypeParamName, this.interestCalculationType);
}
-
if (command.isChangeInIntegerParameterNamed(SavingsApiConstants.interestCalculationDaysInYearTypeParamName,
this.interestCalculationDaysInYearType)) {
final Integer newValue = command.integerValueOfParameterNamed(SavingsApiConstants.interestCalculationDaysInYearTypeParamName);
@@ -1718,7 +1706,6 @@ public class SavingsAccount extends AbstractAuditableWithUTCDateTimeCustom {
: newValue;
actualChanges.put(SavingsApiConstants.interestCalculationDaysInYearTypeParamName, this.interestCalculationDaysInYearType);
}
-
if (command.isChangeInBigDecimalParameterNamedDefaultingZeroToNull(SavingsApiConstants.minRequiredOpeningBalanceParamName,
this.minRequiredOpeningBalance)) {
final BigDecimal newValue = command
@@ -1727,7 +1714,6 @@ public class SavingsAccount extends AbstractAuditableWithUTCDateTimeCustom {
actualChanges.put("locale", localeAsInput);
this.minRequiredOpeningBalance = Money.of(this.currency, newValue).getAmount();
}
-
if (command.isChangeInIntegerParameterNamedDefaultingZeroToNull(SavingsApiConstants.lockinPeriodFrequencyParamName,
this.lockinPeriodFrequency)) {
final Integer newValue = command
@@ -1806,7 +1792,6 @@ public class SavingsAccount extends AbstractAuditableWithUTCDateTimeCustom {
actualChanges.put(enforceMinRequiredBalanceParamName, newValue);
this.enforceMinRequiredBalance = newValue;
}
-
if (command.isChangeInBigDecimalParameterNamedDefaultingZeroToNull(minRequiredBalanceParamName, this.minRequiredBalance)) {
final BigDecimal newValue = command.bigDecimalValueOfParameterNamedDefaultToNullIfZero(minRequiredBalanceParamName);
actualChanges.put(minRequiredBalanceParamName, newValue);
@@ -1818,14 +1803,12 @@ public class SavingsAccount extends AbstractAuditableWithUTCDateTimeCustom {
actualChanges.put(lienAllowedParamName, newValue);
this.lienAllowed = newValue;
}
-
if (command.isChangeInBigDecimalParameterNamedDefaultingZeroToNull(maxAllowedLienLimitParamName, this.maxAllowedLienLimit)) {
final BigDecimal newValue = command.bigDecimalValueOfParameterNamedDefaultToNullIfZero(maxAllowedLienLimitParamName);
actualChanges.put(maxAllowedLienLimitParamName, newValue);
actualChanges.put(localeParamName, localeAsInput);
this.maxAllowedLienLimit = newValue;
}
-
if (command.isChangeInBooleanParameterNamed(withHoldTaxParamName, this.withHoldTax)) {
final boolean newValue = command.booleanPrimitiveValueOfParameterNamed(withHoldTaxParamName);
actualChanges.put(withHoldTaxParamName, newValue);
@@ -2260,7 +2243,7 @@ public class SavingsAccount extends AbstractAuditableWithUTCDateTimeCustom {
final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors)
.resource(SAVINGS_ACCOUNT_RESOURCE_NAME + SavingsApiConstants.approvalAction);
- final SavingsAccountStatusType currentStatus = SavingsAccountStatusType.fromInt(this.status);
+ final SavingsAccountStatusType currentStatus = getStatus();
if (!SavingsAccountStatusType.SUBMITTED_AND_PENDING_APPROVAL.hasStateOf(currentStatus)) {
baseDataValidator.reset().parameter(SavingsApiConstants.approvedOnDateParamName)
.failWithCodeNoParameterAddedToErrorCode("not.in.submittedandpendingapproval.state");
@@ -2327,7 +2310,7 @@ public class SavingsAccount extends AbstractAuditableWithUTCDateTimeCustom {
final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors)
.resource(SAVINGS_ACCOUNT_RESOURCE_NAME + SavingsApiConstants.undoApprovalAction);
- final SavingsAccountStatusType currentStatus = SavingsAccountStatusType.fromInt(this.status);
+ final SavingsAccountStatusType currentStatus = getStatus();
if (!SavingsAccountStatusType.APPROVED.hasStateOf(currentStatus)) {
baseDataValidator.reset().parameter(SavingsApiConstants.approvedOnDateParamName)
@@ -2490,7 +2473,7 @@ public class SavingsAccount extends AbstractAuditableWithUTCDateTimeCustom {
final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors)
.resource(SAVINGS_ACCOUNT_RESOURCE_NAME + SavingsApiConstants.rejectAction);
- final SavingsAccountStatusType currentStatus = SavingsAccountStatusType.fromInt(this.status);
+ final SavingsAccountStatusType currentStatus = getStatus();
if (!SavingsAccountStatusType.SUBMITTED_AND_PENDING_APPROVAL.hasStateOf(currentStatus)) {
baseDataValidator.reset().parameter(SavingsApiConstants.rejectedOnDateParamName)
@@ -2551,7 +2534,7 @@ public class SavingsAccount extends AbstractAuditableWithUTCDateTimeCustom {
final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors)
.resource(SAVINGS_ACCOUNT_RESOURCE_NAME + SavingsApiConstants.withdrawnByApplicantAction);
- final SavingsAccountStatusType currentStatus = SavingsAccountStatusType.fromInt(this.status);
+ final SavingsAccountStatusType currentStatus = getStatus();
if (!SavingsAccountStatusType.SUBMITTED_AND_PENDING_APPROVAL.hasStateOf(currentStatus)) {
baseDataValidator.reset().parameter(SavingsApiConstants.withdrawnOnDateParamName)
@@ -2612,7 +2595,7 @@ public class SavingsAccount extends AbstractAuditableWithUTCDateTimeCustom {
final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors)
.resource(depositAccountType().resourceName() + SavingsApiConstants.activateAction);
- final SavingsAccountStatusType currentStatus = SavingsAccountStatusType.fromInt(this.status);
+ final SavingsAccountStatusType currentStatus = getStatus();
if (!SavingsAccountStatusType.APPROVED.hasStateOf(currentStatus)) {
baseDataValidator.reset().parameter(SavingsApiConstants.activatedOnDateParamName)
@@ -2759,7 +2742,7 @@ public class SavingsAccount extends AbstractAuditableWithUTCDateTimeCustom {
final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors)
.resource(SAVINGS_ACCOUNT_RESOURCE_NAME + SavingsApiConstants.closeAction);
- final SavingsAccountStatusType currentStatus = SavingsAccountStatusType.fromInt(this.status);
+ final SavingsAccountStatusType currentStatus = getStatus();
if (!SavingsAccountStatusType.ACTIVE.hasStateOf(currentStatus)) {
baseDataValidator.reset().failWithCodeNoParameterAddedToErrorCode("not.in.active.state");
if (!dataValidationErrors.isEmpty()) {
@@ -2870,7 +2853,7 @@ public class SavingsAccount extends AbstractAuditableWithUTCDateTimeCustom {
}
public void activateAccountBasedOnBalance() {
- if (SavingsAccountStatusType.fromInt(this.status).isClosed() && !this.summary.getAccountBalance(getCurrency()).isZero()) {
+ if (getStatus().isClosed() && !this.summary.getAccountBalance(getCurrency()).isZero()) {
this.status = SavingsAccountStatusType.ACTIVE.getValue();
}
}
@@ -3527,7 +3510,7 @@ public class SavingsAccount extends AbstractAuditableWithUTCDateTimeCustom {
final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors)
.resource(depositAccountType().resourceName() + SavingsApiConstants.blockAction);
- final SavingsAccountStatusType currentStatus = SavingsAccountStatusType.fromInt(this.status);
+ final SavingsAccountStatusType currentStatus = getStatus();
if (!SavingsAccountStatusType.ACTIVE.hasStateOf(currentStatus)) {
baseDataValidator.reset().parameter(SavingsApiConstants.statusParamName)
@@ -3552,7 +3535,7 @@ public class SavingsAccount extends AbstractAuditableWithUTCDateTimeCustom {
final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors)
.resource(depositAccountType().resourceName() + SavingsApiConstants.unblockAction);
- final SavingsAccountStatusType currentStatus = SavingsAccountStatusType.fromInt(this.status);
+ final SavingsAccountStatusType currentStatus = getStatus();
if (!SavingsAccountStatusType.ACTIVE.hasStateOf(currentStatus)) {
baseDataValidator.reset().parameter(SavingsApiConstants.statusParamName)
@@ -3581,7 +3564,7 @@ public class SavingsAccount extends AbstractAuditableWithUTCDateTimeCustom {
final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors)
.resource(depositAccountType().resourceName() + SavingsApiConstants.blockCreditsAction);
- final SavingsAccountStatusType currentStatus = SavingsAccountStatusType.fromInt(this.status);
+ final SavingsAccountStatusType currentStatus = getStatus();
if (!SavingsAccountStatusType.ACTIVE.hasStateOf(currentStatus)) {
baseDataValidator.reset().parameter(SavingsApiConstants.statusParamName)
@@ -3613,7 +3596,7 @@ public class SavingsAccount extends AbstractAuditableWithUTCDateTimeCustom {
final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors)
.resource(depositAccountType().resourceName() + SavingsApiConstants.unblockCreditsAction);
- final SavingsAccountStatusType currentStatus = SavingsAccountStatusType.fromInt(this.status);
+ final SavingsAccountStatusType currentStatus = getStatus();
if (!SavingsAccountStatusType.ACTIVE.hasStateOf(currentStatus)) {
baseDataValidator.reset().failWithCodeNoParameterAddedToErrorCode(SavingsApiConstants.ERROR_MSG_SAVINGS_ACCOUNT_NOT_ACTIVE);
}
@@ -3644,7 +3627,7 @@ public class SavingsAccount extends AbstractAuditableWithUTCDateTimeCustom {
final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors)
.resource(depositAccountType().resourceName() + SavingsApiConstants.blockDebitsAction);
- final SavingsAccountStatusType currentStatus = SavingsAccountStatusType.fromInt(this.status);
+ final SavingsAccountStatusType currentStatus = getStatus();
if (!SavingsAccountStatusType.ACTIVE.hasStateOf(currentStatus)) {
baseDataValidator.reset().parameter(SavingsApiConstants.statusParamName)
.failWithCodeNoParameterAddedToErrorCode(SavingsApiConstants.ERROR_MSG_SAVINGS_ACCOUNT_NOT_ACTIVE);
@@ -3676,7 +3659,7 @@ public class SavingsAccount extends AbstractAuditableWithUTCDateTimeCustom {
final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors)
.resource(depositAccountType().resourceName() + SavingsApiConstants.unblockDebitsAction);
- final SavingsAccountStatusType currentStatus = SavingsAccountStatusType.fromInt(this.status);
+ final SavingsAccountStatusType currentStatus = getStatus();
if (!SavingsAccountStatusType.ACTIVE.hasStateOf(currentStatus)) {
baseDataValidator.reset().parameter(SavingsApiConstants.statusParamName)
diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountCharge.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountCharge.java
index 8c525b208..93127dfed 100644
--- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountCharge.java
+++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountCharge.java
@@ -60,7 +60,7 @@ import org.slf4j.LoggerFactory;
*/
@Entity
@Table(name = "m_savings_account_charge")
-public class SavingsAccountCharge extends AbstractAuditableWithUTCDateTimeCustom {
+public class SavingsAccountCharge extends AbstractAuditableWithUTCDateTimeCustom<Long> {
private static final Logger LOG = LoggerFactory.getLogger(SavingsAccountCharge.class);
diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargePaidBy.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargePaidBy.java
index 123b5641c..39b437dc6 100644
--- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargePaidBy.java
+++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargePaidBy.java
@@ -28,7 +28,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity
@Table(name = "m_savings_account_charge_paid_by")
-public class SavingsAccountChargePaidBy extends AbstractPersistableCustom {
+public class SavingsAccountChargePaidBy extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "savings_account_transaction_id", nullable = false)
diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransaction.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransaction.java
index 2cd1c7dde..96aef5428 100644
--- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransaction.java
+++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransaction.java
@@ -60,7 +60,7 @@ import org.springframework.util.CollectionUtils;
*/
@Entity
@Table(name = "m_savings_account_transaction")
-public final class SavingsAccountTransaction extends AbstractAuditableWithUTCDateTimeCustom {
+public final class SavingsAccountTransaction extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne(optional = false)
@JoinColumn(name = "savings_account_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionTaxDetails.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionTaxDetails.java
index af274b146..0458ed6bf 100644
--- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionTaxDetails.java
+++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionTaxDetails.java
@@ -30,7 +30,7 @@ import org.apache.fineract.portfolio.tax.domain.TaxComponent;
@Entity
@Table(name = "m_savings_account_transaction_tax_details")
-public class SavingsAccountTransactionTaxDetails extends AbstractPersistableCustom {
+public class SavingsAccountTransactionTaxDetails extends AbstractPersistableCustom<Long> {
@ManyToOne
@JoinColumn(name = "savings_transaction_id", nullable = false)
diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsOfficerAssignmentHistory.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsOfficerAssignmentHistory.java
index 6060339d9..3fde52434 100644
--- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsOfficerAssignmentHistory.java
+++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsOfficerAssignmentHistory.java
@@ -35,7 +35,7 @@ import org.apache.fineract.organisation.staff.domain.Staff;
@Entity
@Table(name = "m_savings_officer_assignment_history")
-public class SavingsOfficerAssignmentHistory extends AbstractAuditableWithUTCDateTimeCustom {
+public class SavingsOfficerAssignmentHistory extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne
@JoinColumn(name = "account_id", nullable = false)
diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProduct.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProduct.java
index f47f62149..917b37702 100644
--- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProduct.java
+++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProduct.java
@@ -98,7 +98,7 @@ import org.apache.fineract.portfolio.tax.domain.TaxGroup;
@Inheritance
@DiscriminatorColumn(name = "deposit_type_enum", discriminatorType = DiscriminatorType.INTEGER)
@DiscriminatorValue("100")
-public class SavingsProduct extends AbstractPersistableCustom {
+public class SavingsProduct extends AbstractPersistableCustom<Long> {
@Column(name = "name", nullable = false, unique = true)
protected String name;