Oi!
Após eu fazer os ajustes na minha aplicação, percebi que executa corretamente somente quando eu vou criar uma transação, fazendo todos os cálculos necessários, pela forma_pagamento desejada. O problema está ocorrendo quando eu tento criar uma nova transação, retornando o erro abaixo:
Error: could not execute statement [Referential integrity constraint violation: "FK_TRANSACOES_CONTAS_ID: PUBLIC.TRANSACOES FOREIGN KEY(ID) REFERENCES PUBLIC.CONTAS(ID) (CAST(2 AS BIGINT))"; SQL statement: insert into transacoes (forma_pagamento,numero_conta,saldo,valor,id) values (?,?,?,?,default) [23506-220]] [insert into transacoes (forma_pagamento,numero_conta,saldo,valor,id) values (?,?,?,?,default)]; SQL [insert into transacoes (forma_pagamento,numero_conta,saldo,valor,id) values (?,?,?,?,default)]; constraint [FK_TRANSACOES_CONTAS_ID]
Pergunta. Esse problema acontece por influência do tipo de relacionamento que apliquei na classe de entidade (Transaction)? Vou passar como estão as classes de entidade que criei, pois eu coloquei o relacionamento 1 para 1 (@OneToOne). Poderiam ajudar, por favor?
@Table(name = "contas")
@Entity(name = "Account")
@Setter
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(of = "id")
public class Account {
    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String numero_conta;
    private Double saldo;
    private Boolean ativo;
    public Account(DataRegistrationAccount data){
        this.numero_conta = data.numero_conta();
        this.saldo = data.saldo();
        this.ativo = true;
    }
    public Account(DataDetailingAccount data){
        this.numero_conta = data.numero_conta();
        this.saldo = data.saldo();
    }
    public void deleteOrInvalidateInformations(){
        this.ativo = false;
    }
}
@Table(name = "transacoes")
@Entity(name = "Transaction")
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(of = "id")
public class Transaction {
    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Enumerated(EnumType.STRING)
    private PaymentForm forma_pagamento;
    private String numero_conta;
    private Double valor;
    private Double saldo;
    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "id")
    private Account account;
    public Transaction(DataRegistrationTransaction data) {
        this.forma_pagamento = data.forma_pagamento();
        this.numero_conta = data.numero_conta();
        this.valor = data.valor();
    }
    public Transaction(DataDetailingAccount data) {
        this.numero_conta = data.numero_conta();
        this.saldo = data.saldo();
    }
}
Classe onde eu coloquei todas as regras de negócio (service):
@Service
@Transactional
@RequiredArgsConstructor
public class TransactionService {
    @Autowired
    private AccountRepository accountRepository;
    @Autowired
    private TransactionRepository transactionRepository;
    public DataDetailingTransaction saveTransaction(Transaction transactions) {
        if (transactions.getNumero_conta() == null) {
            throw new ValidationException("Conta não cadastrada na base de dados.");
        }
        Optional<Transaction> optTransaction = Optional.ofNullable(transactionRepository.findTransactionByAtivoTrue(transactions.getNumero_conta()));
        var valorCalculado = computeTaxTransaction(transactions);
        Optional<Account> optAccount = Optional.ofNullable(accountRepository.findAccountByAtivoTrue(transactions.getNumero_conta()));
        double saldoInicial = 0.0;
        saldoInicial = optAccount.get().getSaldo();
        double saldo = 0.0;
        saldo = saldoInicial - valorCalculado;
        var account = new Account(optAccount.get().getId(), transactions.getNumero_conta(), saldo, true);
        accountRepository.save(account);
        Transaction saveTransaction;
        var transaction = new Transaction(transactions.getId(), transactions.getForma_pagamento(), transactions.getNumero_conta(), transactions.getValor(), saldo, account);
        saveTransaction = transactionRepository.save(transaction);
        return new DataDetailingTransaction(saveTransaction);
    }
    private double computeTaxTransaction(Transaction transactions) {
        if (transactions.getForma_pagamento() == null) {
            throw new ValidationException("É obrigatório informar a forma de pagamento para validar o processo de transação.");
        }
        double taxTransaction = 0.0;
        PaymentForm paymentForm = transactions.getForma_pagamento();
        taxTransaction = paymentForm.computeTaxTransaction(transactions.getValor());
        return taxTransaction;
    }
}
        
        
  
  
Seguem as classes controller, DTO (request) e service: