当前位置: 首页 > 面试题库 >

如何在HQL中使用一个类似的运算符在多列中进行搜索(Hibernate SQL)

祁飞飙
2023-03-14
问题内容

希望有人可以帮助我进行此HQL查询。

我在用着:

Query query = session.createQuery(sql);

sql在哪里:

select distinct c.id from EstateConsumer as c where c.clientId = ? and  (c.vehicleReg1 or c.vehicleReg2) like ?

但出现以下异常:

org.hibernate.hql.ast.QuerySyntaxException: unexpected AST node: or near line 1, column 121

那么,如何通过使用一个“喜欢”来使用“或”语法呢?

但是,以下方法有效:

select distinct c.id from EstateConsumer as c where c.clientId = ? and  c.vehicleReg1 like ? or c.vehicleReg2 like ?

但我不想使用多个“赞”


问题答案:

您可以使用 REGEX 解决问题,例如:

REGEXP_LIKE('Hello world', 'Hello', 'mars') = 1

因此,您可以替换查询:

select ... where c.clientId = ? and  c.vehicleReg1 like ? or c.vehicleReg2 like ?

通过在这里使用此查询:

SELECT ... WHERE c.clientId = ? and REGEXP_LIKE(?, c.vehicleReg1, c.vehicleReg2) = 1
-- -------------------------------------^^

这意味着如果您的值?是like c.vehicleReg1c.vehicleReg2返回1,则匹配错误

注意

@ mm759,由于程序的编码和结构方式…它仅传递2个参数(一个用于clientId,一个用于多个vehicleReg列)

您可以在查询的多个位置使用相同的参数,如下所示:

q = getEntityManager().createNamedQuery(
"select ... where c.clientId = :par1 and  c.vehicleReg1 like :par2 or c.vehicleReg2 like :par2");
//-------------------------------^^----------------------------^^--------------------------^^

q.setParamettre("par1", "value1");
q.setParamettre("par2", "value2");


 类似资料:
  • 问题内容: 我有两个具有以下映射的索引(我将简化它们的映射): 1)AccountType映射: 2)ProductType映射: 现在,我有几件事需要弄清楚: 1)首先,有一个索引是一个好主意,在我的情况下是帐户,并且产品是嵌套对象,但是在这里每次我要更新/添加新产品时,我都必须重新索引(更新)整个帐户文件? 2)我的第二个问题是:我想具有搜索功能,因此,如果用户通过在文本框中键入内容进行搜索,

  • 问题内容: 我想以查询其他字段的相同方式将多值字段的值查询为单独的“字段”。我有这样的数据结构: 我的查询如下所示: 仅当值包含我的整个查询时,“类型”和“运算符”才能完美匹配单个值字段。例如,查询“ foo two”不会返回匹配项。 我希望标签字段的行为相同。现在,查询“东西”将在不应该返回匹配项时返回匹配项,因为没有字段或标记值将两个单词都包含在一个值中。有没有办法做到这一点? 编辑 Val的

  • 问题内容: 我正在尝试提供一种搜索功能,该功能将搜索多列以查找基于关键字的匹配项。该查询: 仅适用于搜索一列,我注意到用逗号分隔列名称会导致错误。那么可以在mysql中搜索多个列吗? 问题答案: 您可以使用AND或OR运算符,具体取决于要返回的搜索内容。 这两个子句必须匹配才能返回记录。或者: 如果任一子句匹配,则将返回记录。 有关使用MySQL SELECT查询可以执行的操作的更多信息,请尝试使

  • 我正在尝试学习与php composer包的帮助。我有一个,其名称为,其中包含、、、字段。我想有基于以上字段的过滤器,它应该在操作符。我当前的查询代码是: 我的问题是: > 我无法获取数据。但是如果我执行下面的代码: 我在运算符中获取值,但需要在其中包含操作。

  • 问题内容: 我正在使用Hibernate 4和Lucene 3.6。我对构面计数有要求。根据我的要求,我有一个实体“产品”。实体“产品”具有某些属性,例如ID,颜色,品牌。 现在,我的要求是,我想以多维方式获取该实体的商品数,并获取红色(彩色)耐克(品牌)服装的数量。 所以举个例子。我的数据库中保存了以下产品实体。 id品牌颜色 1锐步红 2锐步黑 3锐步绿 4利红 5利黑 6利黑 现在,我希望我

  • 我目前正在研究如何在我的项目中实现搜索。我有一个名为users的表,它有两列,firstName和lastName。我希望能够在这两列之间搜索,例如,用户的名字是John,姓是Smith,因此当他们搜索John Smith时,它将返回具有该名称的用户。 或者他们可以只搜索名字等。解决这个问题的方法是什么? 使用PostgreSQL的全文功能是正确的途径吗?我目前正在使用Node w/TypeORM