【问题标题】:JPA and SQL Server column encryptionJPA 和 SQL Server 列加密
【发布时间】:2012-05-06 14:17:20
【问题描述】:
我正在使用 WebSphere 7 和他们的基于 OpenJPA 的 JPA 2.0 实现,我有一些事情让我发疯。我必须连接到使用数据库列加密的 SQL Server 2008 数据库。加密由几个数据库命令完成:
1 - 通过认证打开对称密钥解密
2 - 使用数据库方法 EncryptByKey 或 DecryptByKey 执行插入/选择/更新/等操作
3 - 关闭对称密钥
我已经搜索过,OpenJPA 似乎不支持此功能。有人知道如何让 OpenJPA 与这种类型的加密很好地配合使用吗?或者我应该跳过这个项目的 JPA 并使用老式的 PreparedStatements?
【问题讨论】:
标签:
sql-server
jpa
websphere
【解决方案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();