liferay中的模糊查询

zackzhang 2008-02-25 12:06:39
在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;
}
...全文
89 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
hshbs 2008-10-10
  • 打赏
  • 举报
回复
liferay里的查询要用到Lucene吧

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧