Index: forgon-tools/src/main/java/com/forgon/tools/hibernate/ObjectDaoImpl.java =================================================================== diff -u -r15698 -r16126 --- forgon-tools/src/main/java/com/forgon/tools/hibernate/ObjectDaoImpl.java (.../ObjectDaoImpl.java) (revision 15698) +++ forgon-tools/src/main/java/com/forgon/tools/hibernate/ObjectDaoImpl.java (.../ObjectDaoImpl.java) (revision 16126) @@ -114,16 +114,41 @@ public Object getByProperty(String objectPOName, String propertyName, Object propertyValue) { - Object po = null; +// Object po = null; +// List list = getHibernateTemplate().find( +// "from " + objectPOName + " po where po." + propertyName + "=?", +// propertyValue); +// +// if (list != null && list.size() >= 1) { +// po = (Object) list.get(0); +// } +// return po; - List list = getHibernateTemplate().find( - "from " + objectPOName + " po where po." + propertyName + "=?", - propertyValue); - - if (list != null && list.size() >= 1) { - po = (Object) list.get(0); + final String queryString = "from " + objectPOName + " po where po." + propertyName + "=?"; + final Object[] values = new Object[] {propertyValue}; + @SuppressWarnings("unchecked") + List list = (List)getHibernateTemplate().executeWithNativeSession( + new HibernateCallback() { + public Object doInHibernate(Session session) + throws HibernateException { + + Query query = session.createQuery(queryString); + + if (values != null) { + for (int i = 0; i < values.length; i++) { + query.setParameter(i, values[i]); + } + } + query.setFirstResult(0); + query.setMaxResults(1); + List resultList = query.list(); + return resultList; + } + }); + if(list!=null && list.size()>0){ + return list.get(0); } - return po; + return null; } // 获取并锁定记录 public Object getByProperty_ForUpdate(String objectPOName,String propertyName,Object propertyValue){