Я делаю небольшой проект 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=?
Как остановить это автоматическое обновление, так как поля пароля тоже обновляются?