2012-04-25 5 views
0

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

1 - ОТКРЫТЫЙ SYMMETRIC ключ дешифрования ПО СЕРТИФИКАЦИИ

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

3 - ЗАКРЫТЬ SYMMETRIC KEY

Я искал и не обнаружил, что 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(); 
Смежные вопросы