Spring Boot обновляет каждое существующее поле в базе данных при создании нового поля - PullRequest
0 голосов
/ 26 апреля 2020

Я делаю небольшой проект Spring boot - database. Всякий раз, когда я добавляю объект и передаю его в базу данных, он вставляется, но существующие поля обновляются.

Это класс сущности:


@Entity
@Table(name = "C_Data_V1")
public class CustomerDetails {
    @Id
    @Column(name = "Account_id", length=7)
    private int accountId;
    @Column(name = "Account_password", length=15)
    private String accountPassword;
    @Column(name = "Name", length=20)
    private String name;
    @Column(name = "Email_id", length=25)
    private String eMail;
    @Column(name = "Mobile_number", length=10)
    private String mobileNumber;
    @Column(name = "Transaction_pin")
    private String transactionPin;
    @Column(name = "Balance", length=9)
    private float balance;

    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, targetEntity = TransactionDetails.class)
    @JoinColumn(name = "account_id", referencedColumnName = "account_id")
    private List<TransactionDetails> transactionDetails = new ArrayList<TransactionDetails>();


    public CustomerDetails() {
        super();
    }
    public CustomerDetails(String name, String eMail, String mobileNumber) {
        this.accountId = 0;
        this.name = name;
        this.eMail = eMail;
        this.mobileNumber = mobileNumber;
    }
    public int getAccountId() {
        return accountId;
    }
    public void setAccountId(int accountId) {
        this.accountId = accountId;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String geteMail() {
        return eMail;
    }
    public void seteMail(String eMail) {
        this.eMail = eMail;
    }
    public String getMobileNumber() {
        return mobileNumber;
    }
    public void setMobileNumber(String mobileNumber) {
        this.mobileNumber = mobileNumber;
    }


    public String getAccountPassword() {
        return accountPassword;
    }
    public void setAccountPassword(String accountPassword) {
        this.accountPassword = accountPassword;
    }
    public String getTransactionPin() {
        return transactionPin;
    }
    public void setTransactionPin(String transactionPin) {
        this.transactionPin = transactionPin;
    }
    public float getBalance() {
        return balance;
    }
    public void setBalance(float balance) {
        this.balance = balance;
    }

    public List<TransactionDetails> getTransactionDetails() {
        return transactionDetails;
    }
    public void setTransactionDetails(List<TransactionDetails> transactionDetails) {
        this.transactionDetails = transactionDetails;
    }
    @Override
    public String toString() {
        return "CustomerDetails [accountId=" + accountId + ", name=" + name + ", eMail=" + eMail + ", mobileNumber="
                + mobileNumber + ", balance=" + balance + ", transactionDetails=" + transactionDetails + "]";
    }
}

Вот логос службы c для создания записи в базе данных:

@PostMapping("/account")
    public CustomerDetails createAccount(@RequestBody CustomerDetails customer){
        List<CustomerDetails> allAccounts = getAccounts();
        if(allAccounts.isEmpty())
            customer.setAccountId(10000000);
        else{
            int maxID = allAccounts.stream().max(Comparator.comparingLong(CustomerDetails::getAccountId)).get().getAccountId();
            customer.setAccountId(maxID + 1);
        }

//      String encryptedPassword = new String(passwordEncryptor(customer.getAccountPassword().getBytes()));
//      customer.setAccountPassword(encryptedPassword);
//      String encryptedTpin = new String(passwordEncryptor(customer.getTransactionPin().getBytes()));
//      customer.setTransactionPin(encryptedTpin);
        return walletRepository.save(customer);
   }

Вот что происходит:

Hibernate: insert into c_data_v1 (account_password, balance, email_id, mobile_number, name, transaction_pin, account_id) values (?, ?, ?, ?, ?, ?, ?)
Hibernate: update c_data_v1 set account_password=?, balance=?, email_id=?, mobile_number=?, name=?, transaction_pin=? where account_id=?
Hibernate: update c_data_v1 set account_password=?, balance=?, email_id=?, mobile_number=?, name=?, transaction_pin=? where account_id=?
Hibernate: update c_data_v1 set account_password=?, balance=?, email_id=?, mobile_number=?, name=?, transaction_pin=? where account_id=?
Hibernate: update c_data_v1 set account_password=?, balance=?, email_id=?, mobile_number=?, name=?, transaction_pin=? where account_id=?
Hibernate: update c_data_v1 set account_password=?, balance=?, email_id=?, mobile_number=?, name=?, transaction_pin=? where account_id=?
Hibernate: update c_data_v1 set account_password=?, balance=?, email_id=?, mobile_number=?, name=?, transaction_pin=? where account_id=?

Как остановить это автоматическое обновление, так как поля пароля тоже обновляются?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...