【发布时间】:2019-11-13 13:06:52
【问题描述】:
我编写了自己的 AttributeConverter 来加密和解密字符串,它类似于:
@Converter
public class CryptoConverter implements AttributeConverter<String, String> {
@Override
public String convertToDatabaseColumn(String attribute) {
//works fine
}
@Override
public String convertToEntityAttribute(String dbData) {
//works fine
}
}
我的实体类正在使用这个转换器:
@Entity
@PublishKeyword
@Table(name = "CARD")
@JsonIgnoreProperties(ignoreUnknown = true)
public class Card {
//...
@Column(name = "CARD_LAST_4_DIGITS")
@Convert(converter = CryptoConverter.class)
@Attribute(keyword = "CARD_CARDLAST4DIGITS", resolvedKeyword = "cardLast4Digits", length = 100)
private String cardLast4Digits;
//...
}
直到这里一切正常。我设置的数据在数据库中加密,得到结果集后也解密。但是 CryptoConverter 不会在 JPA 查询中自动使用。 ?
@Override
public Card findCard(String lastFour, String tenantId, EntityManager entityManager) {
Query query = entityManager.createQuery("SELECT e FROM Card e where e.cardLast4Digits = :lastFour").setParameter("lastFour", "lastFour");
List<Card> cardList = query.getResultList();
if (cardList != null && cardList.size() > 0) {
return cardList.get(0);
}
return null;
}
【问题讨论】:
-
您希望转换器在什么意义上在查询中被“使用”?
标签: java jpa encryption cryptography aes