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

相关文章:

java - Hibernate 标准选择值是列值的前 5 个字符的所有行

hibernate - 错误 : prepared transaction does not exist in postgresql

hibernate - Grails 和 hibernate session ,异常时保存到数据库

java - 使用 : JAX-RS API, ServiceLocator 和远程 EJB 组织我的项目的选项

java - 如何创建一个 Vector,其中每个条目都是一个具有 2 个字段的结构

java - java中如何监控文本文件

java - Hibernate 保存新的一对一实体映射

java - 错误 org.hibernate.util.JDBCExceptionReporter - 通信链路故障

Java Web 开发入门

Java设置差异,我可以使用java对象还是数据库?