gpt4 book ai didi

java - Spring Boot - @Convert不调用convertToDatabaseColumn方法

转载 作者:行者123 更新时间:2023-12-01 19:05:35 24 4
gpt4 key购买 nike

我想使用@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;
}
}

最佳答案

您可以像这样在实体类级别尝试 @Converts 并看看它是否适合您吗?

@Entity 
@Converts({
@Convert(attributeName="msisdn",
converter=EncryptDecrypt.class)})
@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)
private String msisdn;
}

关于java - Spring Boot - @Convert不调用convertToDatabaseColumn方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59562545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com