Java JPA:在JPA查询中使用AttributeConverter自动解密
我编写了自己的AttributeConverter来加密和解密字符串,类似于:Java JPA:在JPA查询中使用AttributeConverter自动解密,java,jpa,encryption,cryptography,aes,Java,Jpa,Encryption,Cryptography,Aes,我编写了自己的AttributeConverter来加密和解密字符串,类似于: @Converter public class CryptoConverter implements AttributeConverter<String, String> { @Override public String convertToDatabaseColumn(String attribute) { //works fine } @Override public String conve
@Converter
public class CryptoConverter implements AttributeConverter<String, String> {
@Override
public String convertToDatabaseColumn(String attribute) {
//works fine
}
@Override
public String convertToEntityAttribute(String dbData) {
//works fine
}
}
在这里之前一切都很好。我设置的数据在数据库中进行加密,并在获得结果集后进行解密。但是加密转换器并没有在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;
}
@覆盖
公共卡findCard(字符串lastFour、字符串tenantId、EntityManager和EntityManager){
Query Query=entityManager.createQuery(“从卡片e中选择e,其中e.cardLast4Digits=:lastFour”).setParameter(“lastFour”,“lastFour”);
List cardList=query.getResultList();
if(cardList!=null&&cardList.size()>0){
返回卡片列表。获取(0);
}
返回null;
}
在什么意义上,您希望在查询中“使用”转换器?
@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;
}