java - 带有可变部分的最终字符串
问题描述
我有一个带有一些值的集合。我想使用这些值编写查询的 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”没有任何关系,因为它在我的本地工作。有人可以帮我解决导致詹金斯出现此错误的原因。
解决方案
推荐阅读
- swift - UIView 只有在超过一根手指的情况下才能通过触摸?
- javascript - React native 和 firestore:geohash 附近搜索到给定距离,结果错误
- c# - 如何在 C# 中修改这个嵌套的 for 循环?
- javascript - Angular Js 插值错误:[$interpolate:interr]
- objective-c - 将相同命名的 NSURLComponents queryItems 分组到 NSDictionary 作为数组
- python - 如何使用python选择网页抓取中的第二个元素?
- python - 导入 _caffe 时 DLL 加载失败
- python - 无法使我的后台任务与 celery 一起使用
- javascript - ERR_ABORTED 404 socket.io(未找到)
- react-native - react-native-countdown-timer 减慢应用程序