我正在尝试使用jasypt加密byte []字段。
加密前的代码
@Entity
public class ContentFile {
...
@Column(name = "fileContent")
@Lob
private byte[] fileContent;
...
}
通常这会在db中映射到oracle和我使用的h2中的BLOB。 现在添加加密后我有类似的东西
@TypeDef(name = TypeDefName.ENCRYPTED_BYTE_ARRAY, typeClass = EncryptedBinaryType.class, parameters = { @Parameter(name = TypeDefParamName.ENCRYPTOR_REGISTERED_NAME, value = EncryptorRegisteredName.HIBERNATE_BINARY_ENCRYPTOR) })
@Entity
public class ContentFile {
...
@Type(type = TypeDefName.ENCRYPTED_BYTE_ARRAY)
@Column(name = "fileContent")
@Lob
private byte[] fileContent;
...
}
但是生成的模式现在不同了 - 我在Oracle中获得RAW(255),在H2中获得二进制(255),当然这会产生错误,因为字节数组要大得多。 看起来@Lob在放置@Type时会被忽略,那么有没有办法告诉jasypt / hibernate这个byte []实际上应该是BLOB?