【问题标题】:Jpa no result if select from column with white spaces如果从带有空格的列中选择,Jpa 没有结果
【发布时间】:2014-03-15 18:37:48
【问题描述】:

如果“key”参数包含空格(例如:“cat and dog”)查询结果为空..为什么?

Query q=em.createQuery("SELECT a FROM Articolo a WHERE a.nome LIKE '%"+key+"%'");

但如果关键参数只包含“cat”或“and”或“dog”,它是否有效?

【问题讨论】:

  • 您的 JPA 实现将该 JPQL 转换为什么 SQL 语句?这就是日志的用途
  • mysql 中的“nome”列包含空格
  • 您的表中是否有任何记录符合您的过滤条件?
  • 是的,Articolo 表中有一条带有空格的记录(例如:猫和狗)
  • 但是如果在 Workbench 中我做这个查询: select * from articolo where nome='cat and dog';我没有任何结果

标签: mysql jakarta-ee servlets jpa


【解决方案1】:

您是否在数据库中执行以下查询得到任何结果,

SELECT a FROM Articolo a WHERE a.nome LIKE '%"+key+"%'

'cat and dog' 有两个空格,这可能是它没有得到的原因。 JPQL、HQL、JDBC 的工作方式相同。

但是,我建议在编写 jpql 查询之前,我们可以检查数据库中的查询结果。

【讨论】:

  • 我解决了 ..'cat and dog' 有三个空格 ...yeessss ..非常感谢
【解决方案2】:

当您尝试这样做时,请考虑使用命名参数。

Query q=em.createQuery("SELECT a FROM Articolo a WHERE a.nome LIKE :value);
q.setParameter("value", "%dog%");

另请阅读SQL LIKE wildcard space character

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多