0

我正在使用 WebSphere 7 和他们的基于 OpenJPA 的 JPA 2.0 实现,我有一些东西让我发疯。我必须连接到使用数据库列加密的 SQL Server 2008 数据库。加密由几个数据库命令完成:

1 - 通过认证打开对称密钥解密

2 - 使用数据库方法 EncryptByKey 或 DecryptByKey 执行插入/选择/更新/等

3 - 关闭对称键

我已经搜索过,OpenJPA 似乎不支持此功能。有人知道如何让 OpenJPA 与这种类型的加密很好地配合使用吗?或者我应该跳过这个项目的 JPA 并使用老式的 PreparedStatements?

4

1 回答 1

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();
于 2012-05-10T13:40:29.090 回答