liferay中的模糊查询
在liferay中,模糊查询是怎么解决的!他自动生成的PersistenceImpl里有问题
如:
String finderMethodName = "findBycontractidAndContractNameAndClientNameAndPmAndContractStatus";
String[] finderParams = new String[] {
String.class.getName(), String.class.getName(),
String.class.getName(), String.class.getName(),
String.class.getName()
};
Object[] finderArgs = new Object[] {
contractid, contractName, clientName, pm, contractStatus
};
Object result = FinderCache.getResult(finderClassName,
finderMethodName, finderParams, finderArgs, getSessionFactory());
if (result == null) {
Session session = null;
try {
session = openSession();
StringMaker query = new StringMaker();
query.append(
"FROM com.pccw.portlet.project.model.Project WHERE ");
if (contractid == null) {
query.append("contractid like null");
} else {
query.append("contractid like ?");
}
query.append(" AND ");
if (contractName == null) {
query.append("contractName like null");
} else {
query.append("contractName like ?");
}
query.append(" AND ");
if (clientName == null) {
query.append("clientName like null");
} else {
query.append("clientName like ?");
}
query.append(" AND ");
if (pm == null) {
query.append("pm like null");
} else {
query.append("pm like ?");
}
query.append(" AND ");
if (contractStatus == null) {
query.append("contractStatus like null");
} else {
query.append("contractStatus like ?");
}
query.append(" ");
query.append("ORDER BY ");
query.append("projectId DESC");
Query q = session.createQuery(query.toString());
int queryPos = 0;
if (contractid != null) {
q.setString(queryPos++, contractid);
}
if (contractName != null) {
q.setString(queryPos++, contractName);
}
if (clientName != null) {
q.setString(queryPos++, clientName);
}
if (pm != null) {
q.setString(queryPos++, pm);
}
if (contractStatus != null) {
q.setString(queryPos++, contractStatus);
}
List list = q.list();
FinderCache.putResult(finderClassName, finderMethodName,
finderParams, finderArgs, list);
return list;
} catch (Exception e) {
throw HibernateUtil.processException(e);
} finally {
closeSession(session);
}
} else {
return (List) result;
}