gpt4 book ai didi

java - EJB QL 中不区分大小写的搜索

转载 作者:行者123 更新时间:2023-12-04 06:48:54 25 4
gpt4 key购买 nike

这看起来很简单,我不敢相信我自己还没有找到解决方案。我有一个名为 PersonBean 的 bean,它有一个名称。现在我想编写一个 finder 方法,它接受一个字符串并查找名字中带有该字符串的人,不区分大小写。这是我当前的 EJB QL:

SELECT OBJECT(p)
FROM Person p
WHERE (p.name LIKE ?1)

我有两个问题:
  • 我希望搜索不区分大小写(以上内容区分大小写),但我找不到类似 lower() 的内容或 upper()在 EJB QL 中。我该怎么做才能有这种行为? 更新:我使用的是 J2EE 1.4 版和 glassfish 2.1 版,如果这很重要的话。
  • 我必须向该方法传递一个丑陋的字符串,即 findByString("%john%") .有没有办法编写 EJB QL 以便我可以传递类似 findByString("john") 的内容? ?
  • 最佳答案

    关于你的第二个问题,有一个CONCAT EJB QL 2.1 中的函数,所以我认为以下应该有效:

    WHERE (p.name LIKE CONCAT('%', CONCAT(?1, '%')))

    编辑:以上不起作用,因为 ql 语法只允许在 LIKE 中使用文字字符串和输入参数。表达,这确实是有限制的。使用 LOCATE 应该可以达到同样的效果。像这样的功能:

    WHERE LOCATE(p.name, ?1) <> 0

    关于java - EJB QL 中不区分大小写的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3404981/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com