我有10个字段的搜索屏幕,涉及大约5到6个表格以获取结果。我正在编写一个自定义SQL查询,并仅在存在值时才在其中附加条件。

有人可以建议这是正确的方法还是其他更好的方法。

我无法根据自己的情况使用任何插件或其他API。

StringBuffer sqlQuery = new StringBuffer();
sqlQuery.append (" select member.* from member, customer, case where customer.status='A');
if(firstName != null)
sqlQuery.append("customer.firstName= :firstName");

if(caseid != null)
sqlQuery.append("case.caseid =:caseid");

SQLQuery queryObj = createSQLquery(sqlQuery.toString());
queryObj.list();


其中作为成员,客户,案例是实际表。

更新

当我向字符串缓冲区添加where条件时

if(caseid != null)
sqlQuery.append(" and case.caseid =:caseid");

and when queryObj is formed I am doing it as
if(caseid != null)
queryObj.setString("caseid", caseid);

is there better way to add after queryObj (to combine both)?


提前致谢。

最佳答案

不,这不一定是正确的方法。使用Hibernate时,SQL不是首选的查询语言。如果可能,应首选HQL。 Hibernate还具有the Criteria API,它专门用于构建动态查询。

关于java - hibernate 自定义查询搜索屏幕,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11000402/

10-10 16:41