首页 > 解决方案 > 带有可变部分的最终字符串

问题描述

我有一个带有一些值的集合。我想使用这些值编写查询的 IN 子句。这是我的代码 -

Class A {
      private static final Set<String> values = Stream.of("NY", "NJ").collect(Collectors.toCollection(HashSet::new));

      public static set<String> getValues() { return  values;}
}

我想创建查询 - SELECT NAME FROM TABLE WHERE STATE IN ('NY', 'NJ');

以下代码有效 -

Class B {
     public static final String query = "SELECT NAME FROM TABLE WHERE STATE IN ('NY', 'NJ')";
}

以下代码是我本地的一个代码,而它在詹金斯上失败并出现错误 -
系统资源不足。com.sun.tools.javac.comp.Attr.lambdaEnv 处的 java.lang.StackOverflowError(Attr.java:2639)

Class B {
     public static final String query = "SELECT NAME FROM TABLE WHERE STATE IN " + A.getValues().stream().map(key->"'" + key + "'").collect(Collectors.joining(",","(",")")) ;
}

我猜这与关键字“final”没有任何关系,因为它在我的本地工作。有人可以帮我解决导致詹金斯出现此错误的原因。

标签: javastringjenkinsfinal

解决方案


推荐阅读