使用JPA获取数据库用户并在Entity Attribute中设置

时间:2018-09-05 06:47:30

标签: java jpa oracle11g persistence

我是JPA的新手。我在数据库中有这些表,其中列Created_By不能为空。问题是我遇到了约束问题,因为此值不可为空。

数据库:Oracle 11G 应用服务器:IBM Websphere 使用JNDI作为数据源 交易表:

Customer_Id | Amount | Status  | Created_BY   | Created_Date  |
1           | 10    | Pending  |   (USER)     |  (new Date()) |

在我的Java代码中,我没有设置CreatedBy和属性,因为它们在日期为SYSDATE的数据库脚本中默认设置。

Customers customer = new Customer();
customer.setCustomerId(12324);
customer.setAmount(10);
customer.setStatus(StatusType.PENDING.getName());
customer.setCreatedDate(new Date());

无论如何,我可以使用JPA从数据库中访问用户吗?不使用本地查询“从Dual中选择用户”。

1 个答案:

答案 0 :(得分:0)

我可以通过下面的代码获取连接用户名。

 EntityManagerFactoryInfo info = (EntityManagerFactoryInfo) em.getEntityManagerFactory();
 String userName = info.getPersistenceUnitInfo().getNonJtaDataSource().getConnection().getMetaData().getUserName();