我正在获取oracle表行锁,同时在生产服务器中使用DAOImpl中编写的下述方法。它在测试服务器上运行良好。
`public boolean inactiveServices(String custUid) {
Session session = null;
try {
session = sessionFactory.openSession();
Long count = (Long) (session.createQuery(
"select count(*) as intcustomeridpk from CustomerRegistrationPOJO t where t.customerRegistrationPK.custUid = '"
+ custUid + "'").iterate().next());
if (count < 1)
return false;
String queryToFetchUserIdPk = "select t.customerRegistrationPK.intCustomerId as intcustomeridpk from CustomerRegistrationPOJO t where t.customerRegistrationPK.custUid = '"
+ custUid + "'";
//Iterator iterator = session.createQuery(queryToFetchUserIdPk).iterate();
String currentCustIntIdPk = (String) session.createQuery(queryToFetchUserIdPk).iterate().next();
System.out.println("currentCustIntIdPk "+currentCustIntIdPk);
Criteria criteria = session.createCriteria(CustUtilsPOJO.class).add(
Restrictions.eq("custUtlilityKey.custUid", currentCustIntIdPk))
.add(Restrictions.eq("ynActive", "Y"))
.add(Restrictions.ne("dmlFlag", 2));
List<CustUtilsPOJO> foundUtilList = criteria.list();
for (CustUtilsPOJO eachUtil : foundUtilList) {
System.out.println("centerCode=="+eachUtil.getCenterCode()+"serviceId=="+eachUtil.getCustUtlilityKey().getUtilNumber()+"utilityId=="+eachUtil.getCustUtlilityKey().getUtilId()+"intCustUtil=="+eachUtil.getIntCustomerUtlServiceId());
eachUtil.setDmlFlag(2);
eachUtil.setYnActive("N");
session.merge(eachUtil);
}
Transaction txn = session.beginTransaction();
txn.commit();
} catch (Exception ex) {
ex.printStackTrace();
} finally {
if (session != null && session.isOpen()) {
session.flush();
session.clear();
session.close();
}
}
return true;
}`