Springboot Как сохранить данные в отношениях OneToMany

Я новичок в разработке Java и Java, я только начал учить себя Springboot, и я хотел бы сохранить данные в таблице, которая имеет отношение «один ко многим». Я не знаю, как это сделать, поскольку это разные отношения.

Это мой код:

Класс учетной записи

Entity
@Table(name = "Account")
public class Account implements Serializable {

    @JsonIgnore
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int accountID;

     @JsonIgnore
    private String accountName;

     @JsonIgnore
    private String accountType;

    private Boolean openAccount;

     @JsonIgnore
    private Double balance;

    @JsonIgnore
    @OneToOne(mappedBy = "account")
    private Customer customer;

    @OneToMany(mappedBy = "account")
    private List<AccountTransactions> Transactions ;

    public Account() {
    }

    public Account(String accountType, String accountName, Boolean openAccount, Double balance, Customer customer) {
        this.accountType = accountType;
        this.accountName = accountName;
        this.openAccount = openAccount;
        this.balance = balance;
        this.customer = customer;
    }

  ...  ommited getters and setters for brevity

Класс AccountTransactions

@Entity
@Table(name = "Transactions")
public class AccountTransactions implements Serializable {

    @JsonIgnore
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int transactionID;
    private int transactionCode;
    private String transactionDate;
    private String transactionType;
    private String transactionTime;
    private String transactionAmount;
    private String transactionTo;
    private String transactionFrom;


    @ManyToOne
    @JoinColumn(name = "accountID")
    private Account account;


    public AccountTransactions() {
    }

    public AccountTransactions(int transactionCode, String transactionDate, String transactionType, String transactionTime, String transactionAmount, String transactionTo, String transactionFrom) {
        this.transactionCode = transactionCode;
        this.transactionDate = transactionDate;
        this.transactionType = transactionType;
        this.transactionTime = transactionTime;
        this.transactionAmount = transactionAmount;
        this.transactionTo = transactionTo;
        this.transactionFrom = transactionFrom;
    }

    ...  ommited getters and setters for brevity

AccountService класс

public TransactionResponse sendPoints(Transfer transferObject){


    Account account = accountRepository.findByAccountName(transferObject.getFromName());
    Account sendingToAccount = accountRepository.findByAccountType(transferObject.getToType());

    AccountTransactions transacts = new AccountTransactions();
    DateUtility todayDate = new DateUtility();

    if (account == null  || sendingToAccount == null) {
        throw new ResourceNotFoundException(transferObject.getToType, "account not found");
    }else{

      Boolean transferSucceeded = Transactions.transfer(from, transferObject.getToType,transferObject.getAmount().toString());
      if (transferSucceeded){

               newAccountBalance = Double.parseDouble(Transactions.getBalance(from));
               transacts.setTransactionAmount(transferObject.getAmount().toString());
               transacts.setTransactionCode(01014);
               transacts.setTransactionDate(todayDate.getCurrentDateTime());
               transacts.setTransactionFrom("");
               transacts.setTransactionTime(todayDate.getCurrentDateTime());
               transacts.setTransactionTo(sendingToAccount.getCustomer().getName());
               transacts.setTransactionType("Transfer");

       // Here is where i need to be able to save the 
       // transact object but i am not sure how to go about it.


               accountRepository.save(account);



               status = true;
               return new TransactionResponse(status, transferObject.getAmount().toString()+" Successfuly Sent ",newAccountBalance);


           }else{
                return new TransactionResponse(status, "Insufficient Funds, Attempt to transfer "+transferObject.getAmount().toString()+" while current balance = "+userBalance.toString(), userBalance);

           }
    }


}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
3 951
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вам необходимо установить связь аккаунта с транзакциями и сохранить его:

transacts.setAccount(account);
transactRepo.save(transacts);

Вам не нужно вызывать accountRepository.save(account);, потому что вы ничего не меняете в этом объекте (по крайней мере, в коде, который вы вставили). И я не знаю, откуда берется переменная from, она нигде не определена.

Кстати, я не знаю, почему вы вызвали класс AccountTransactions, когда объект этого типа содержит информацию только об одной транзакции. Переименуйте его в AccountTransaction.

Я действительно благодарен, спасибо, что моя проблема решена

Erent 06.04.2018 20:59

Измените аннотацию для поддержки каскада

@OneToMany(mappedBy = "account", cascade = CascadeType.ALL)
private List<AccountTransactions> Transactions ;

а затем добавьте объекты транзакций в свой объект учетной записи, а затем сохраните объект учетной записи. Это сохранит объект учетной записи, а также транзакции.

Спасибо за ответ, это помогло мне решить мою проблему.

Erent 06.04.2018 21:00

Другие вопросы по теме