Как динамически обновить настройки столбца поля сущности во время выполнения?
У меня есть класс модели сущности с именем Customer, который имеет следующий столбец поля, в котором хранится хэш пароля пользователя, который генерируется PgCrypto в Postgresql:
@Entity(name = "customers")
@Table(name = "customers")
public class Customer implements Serializable {
/**
*
*/
private static final long serialVersionUID = -3265467376787297897L;
@JsonIgnore
@Id
@GeneratedValue(generator = "user_id_generator")
@SequenceGenerator(name = "user_id_generator", sequenceName = "user_id_sequence", initialValue = 1)
private Long id;
private String email;
//@JsonIgnore
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
@ColumnTransformer(write = "digest(?, 'sha512')", read = "encode(password, 'hex')")
@Column(columnDefinition = "bytea", updatable = false)
private String password;
@ColumnTransformer(write = "pgp_sym_encrypt(?, current_setting('encrypt.key'), 'cipher-algo=aes128')", read = "pgp_sym_decrypt(phone, current_setting('encrypt.key'), 'cipher-algo=aes128')")
@Column(columnDefinition = "bytea")
private String phone;
@ColumnTransformer(write = "pgp_sym_encrypt(?, current_setting('encrypt.key'), 'cipher-algo=aes128')", read = "pgp_sym_decrypt(address, current_setting('encrypt.key'), 'cipher-algo=aes128')")
@Column(columnDefinition = "bytea")
private String address;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
Теперь у меня возникла проблема, когда при сохранении любых других полей через хранилище класса модели сущностей "Клиент" для пользователя он также сохраняет хэш пароля, генерируя новый хэш пароля, хранящийся в базе данных. Есть ли способ сказать Spring, чтобы он игнорировал определенное поле при сохранении модели объекта или есть ли способ обновить настройки столбца, например, изменить "обновляемый" в аннотации "Столбец"?