Попробуйте это:
Поместите атрибут в вашу сущность:
private byte[] encryptedBody;
Используйте этот геттер и сеттеры:
@Column(columnDefinition= "LONGBLOB", name="encryptedBody")
@ColumnTransformer(
read="AES_DECRYPT(encryptedBody, 'yourkey')",
write="AES_ENCRYPT(?, 'yourkey')")
public byte[] getEncryptedBody() {
return encryptedBody;
}
public void setEncryptedBody(byte[] encryptedBody) {
this.encryptedBody = encryptedBody;
}
А затем, когда вы извлекаете колонку, используйте:
private final Charset UTF8_CHARSET = Charset.forName("UTF-8");
String decodeUTF8(byte[] bytes) {
return new String(bytes, UTF8_CHARSET);
}
String s = decodeUTF8(entity.getEncryptedBody());
ВНИМАНИЕ : AES_DECRYPT и AES_ENCRYPT принадлежат MySQL. Если у вас другой движок базы данных, найдите похожие функции.
Надеюсь, это поможет.