Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate搜索屏幕的自定义查询_Java_Hibernate - Fatal编程技术网

Java Hibernate搜索屏幕的自定义查询

Java 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(

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

有人能建议这是正确的方法还是其他更好的方法吗

我不能在我的情况下使用任何插件或其他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();
其中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分钟内成为标准向导。如果你被卡住了,发布一个问题,精确地解释你正在尝试做什么,并加入相关代码和相关实体的映射。你能看一次更新并帮我做更多吗?