【问题标题】:querydsl spring data jpa operator precedencequerydsl spring data jpa 运算符优先级
【发布时间】:2016-05-27 18:01:26
【问题描述】:
public interface ItemRepository extends JpaRepository<Item, Integer> {
   List<Item> findByNameAndDescriptionIsNullOrDescription(String name, String desc); 
 }

在原生Query中,findByNameAndDescriptionIsNullOrDescriptionwhere条件被翻译成

where item0_.NAME=? and (item0_.DESC is null) or item0_.DESC=? 

我需要 where item0_.NAME=? and (item0_.DESC is null or item0_.DESC=?)

我正在使用以下

  • spring-data-commons-1.6.3.RELEASE.jar

  • spring-data-jpa-1.4.3.RELEASE.jar

  • (i)hibernate-entitymanager-4.2.14.SP1-redhat-1.jar,(ii) JBOSS 提供的 hibernate-jpa-2.0-api-1.0.1.Final-redhat-2.jar EAP 6.3

【问题讨论】:

  • QueryDSL 与这个问题的相关性?本机查询将是 SQL 查询。

标签: java hibernate jpa spring-data-jpa


【解决方案1】:

你可能做不到。

Spring Data querydsl 仅用于简单的 SQL 查询,如果您需要更复杂的内容,请使用 @Query 注释。

其他开发人员也更容易理解您使用的查询,而不是分析您的方法名称。

【讨论】:

    【解决方案2】:

    需要添加第二个参数 desc.. 只需在下面使用:

    List findByNameAndDescription(String name, String desc);

    即使你传递 desc 参数为 null,你也会得到想要的结果。

    猜你喜欢
    • 2014-03-29
    • 2020-06-16
    • 2012-11-09
    • 2011-07-07
    • 2011-06-21
    • 2013-02-24
    • 2012-08-10
    相关资源
    最近更新 更多