Java Hibernate搜索屏幕的自定义查询
我有一个搜索屏幕,它有10个字段,涉及大约5到6个表格来获得结果。我正在编写一个自定义SQL查询,并仅在值存在时才附加where条件 有人能建议这是正确的方法还是其他更好的方法吗 我不能在我的情况下使用任何插件或其他APIJava Hibernate搜索屏幕的自定义查询,java,hibernate,Java,Hibernate,我有一个搜索屏幕,它有10个字段,涉及大约5到6个表格来获得结果。我正在编写一个自定义SQL查询,并仅在值存在时才附加where条件 有人能建议这是正确的方法还是其他更好的方法吗 我不能在我的情况下使用任何插件或其他API StringBuffer sqlQuery = new StringBuffer(); sqlQuery.append (" select member.* from member, customer, case where customer.status='A'); if(
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();
其中as成员、客户、案例是实际表格
更新
当我向字符串缓冲区添加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)?
提前谢谢。不,这不一定是正确的方法。SQL不是使用Hibernate时选择的查询语言。如有可能,应首选HQL。Hibernate也有专门设计用于构建动态查询的功能 使用我说过的标准,我有5个以上的表,我不知道如何相互引用。如果我指的是,其中一些是一对多,多对一,多对多。我正在使用HQL,再次编辑问题,请检查并让我知道。谢谢我只能链接到文档。试着去读,去理解,去实验。您将无法在3分钟内成为标准向导。如果你被卡住了,发布一个问题,精确地解释你正在尝试做什么,并加入相关代码和相关实体的映射。你能看一次更新并帮我做更多吗?