JavaSpringBoot@Convert不调用convertToDatabaseColumn方法
我想使用@Convert来加密我的数据库数据,下面是我的代码部分。 我遇到的问题是,当我设置@Converter(autoApply=true)时,它工作正常,并且所有的字符串属性都被完全加密。 但是当我将其设置为False时,我想要加密的属性不是加密的,并且永远不会调用convertToDatabaseColumn。 我错过了什么
实体类
@Entity
@Table(name="tbl_offer_log")
public class DbLogTable {
@Column(name = "id", length=100)
private int id;
//Column I want to encrypt
@Column(name="msisdn",length=9)
@Convert(converter = EncryptDecrypt.class)
private String msisdn;
}
属性转换器
@Converter
public class EncryptDecrypt implements AttributeConverter<String, String> {
private static SecretKeySpec secretKey;
private static byte[] key;
@Override
public String convertToDatabaseColumn(String strToEncrypt) {
try
{
String secret="secret";
setKey("secret");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
return Base64.getEncoder().encodeToString(cipher.doFinal(strToEncrypt.getBytes("UTF-8")));
}
catch (Exception e)
{
}
return null;
}
}
# 1 楼答案
找到了解决办法。 在getter和setter方法中使用@Convert,现在可以正常工作了
# 2 楼答案
你能像这样在实体类级别尝试@Converts,看看它是否适合你吗