JPA и SQL Server шифрование столбцов

Я использую WebSphere 7 и их реализацию JPA 2.0, основанную на OpenJPA, и у меня есть кое-что, что сводит меня с ума. Я должен подключиться к базе данных SQL Server 2008, которая использует шифрование столбца базы данных. Шифрование выполняется несколькими командами базы данных:

1 - ОТКРЫТОЕ СИММЕТРИЧНОЕ КЛЮЧЕВОЕ ОПРЕДЕЛЕНИЕ СЕРТИФИКАЦИЕЙ

2 - Выполните вставку / выбор / обновление / и т.д., используя методы базы данных EncryptByKey или DecryptByKey

3 - ЗАКРЫТЬ СИММЕТРИЧЕСКИЙ КЛЮЧ

Я искал, и не похоже, что OpenJPA поддерживает эту функцию. Кто-нибудь знает, как заставить OpenJPA хорошо играть с этим типом шифрования? Или я должен просто пропустить JPA для этого проекта и использовать старые добрые PreparedStatements?

1 ответ

Решение

Так что да, похоже, что выполнение нативного запроса - единственный способ сделать это. Так что получается что-то вроде этого:

EntityManager em = getEntityManager();
Query openKey = em.createNativeQuery("OPEN SYMMETRIC KEY MY_KEY  DECRYPTION BY CERTIFICATE MY_CERT");
openKey.executeUpdate();

Query query = em.createNativeQuery("SELECT FIRSTNAME, LASTNAME, CONVERT(varchar, DECRYPTBYKEY(SSN)) as SSN from report where record_id = ?", Report.class);
query.setParameter(1, recordId);
report = (Report) query.getSingleResult();

Query closeKey = em.createNativeQuery("CLOSE SYMMETRIC KEY MY_KEY");
closeKey.executeUpdate();
Другие вопросы по тегам