小编Elk*_*Elk的帖子

在JPQL中可以选择EXISTS()吗?

我正在尝试运行一个查询,检查某些条件是否为真,并返回一个简单的布尔结果作为输出.让它有点棘手的是,其中一个条件是测试是否没有为一组标准返回结果.

我目前正在使用JPA-2.0和hibernate作为我的提供者,由MySQL支持.我已经得到一个在MySQL中运行良好的示例查询,但是当试图让它在JPQL中运行时,它会失败.MySQL查询看起来有点像这样:

Select exists(Select statement with criteria) 
  or not exists(Select statement with criteria);
Run Code Online (Sandbox Code Playgroud)

我也使用CASE获得了相同的输出,但由于JPQL不支持该语句.

无论如何,当我尝试在JPQL中使用类似的查询时,我得到错误:

"意外结束的子树"

根据我的理解,这意味着查询中缺少某些内容.有谁知道如何解决它?

jpa jpql java-ee jpa-2.0

18
推荐指数
3
解决办法
3万
查看次数

将大型方法分解为较小方法时适当的访问级别实践?

所以我是一个相对较新的程序员,我还在学习,并遇到了一些问题(如果我的标签稍微偏离,那么道歉).在早期,我有机会阅读一篇文章,讨论将包含大量代码的方法分解为许多较小的,明确命名的方法的调用的优点.总的来说,我觉得这样做的代码看起来更整洁,并且确保单元测试更容易.但是,我对是否将所有这些新方法公开或私有都有些担忧.将它们设为私有似乎是正确的做法,因为其余的代码通常不需要访问这些方法.但是,单元测试私有方法可能会很混乱.这是最好的做法吗?

我现在在做什么:

 public class WashingMachine {
      public Load wash(Load load) {
           // Removes one sock from load
           for (ClothingItem item : load.getItems()) {
                if (item.getType().equalsIgnoreCase("sock") {
                     load.removeItem(item);
                     .. // logic for sending sock to proper dimension
                     break;
                }
           }
           // rest of logic for cleaning clothes
      }
 }
Run Code Online (Sandbox Code Playgroud)

变成:

 public class WashingMachine {
      // Wash a load of laundry
      public Load wash(Load load) {
           // Removes one sock from load
           removeSock(load.getItems());
           // rest of logic for cleaning clothes
           ..
      } …
Run Code Online (Sandbox Code Playgroud)

java class-design

2
推荐指数
1
解决办法
323
查看次数

标签 统计

class-design ×1

java ×1

java-ee ×1

jpa ×1

jpa-2.0 ×1

jpql ×1