小编Jav*_*aJd的帖子

使用Java中的Streams/Lambda将Stream <Stream <T >>转换为T [] []

我希望看看有没有更好的方法来解决我必须使用这些签名的困境(注意:由于Spock测试需要T [] []并且我提供T [] []作为数据提供者)

我的方法签名是:

public <T> T[][] createArrays(Class<T> clazz, T...items)
Run Code Online (Sandbox Code Playgroud)

我正在使用具有签名的静态方法:

public static <T> Stream<Stream<T>> of(T...items)
Run Code Online (Sandbox Code Playgroud)

并计算传递数组的所有排列.

我的解决方案,手动重写,原谅错别字,是:

public static <T> T[][] createArrays(Class<T> clazz, T...items){
  Stream<Stream<T>> streams = EnumPerm.of(items);
  List<List<T>> lists = streams.map(s -> ).collect(toList()).collect(toList());
  T[][] outer = (T[][])(Array.newInstance(clazz,lists.size(),items.length);
  for(int x=0;x<lists.size();x++){
    List<T> innerList = lists.get(x);
    for(int y=0;y<items.length;y++){
      outer[x][y] = innerList.get(x);
    }      
  }

  return outer;
}
Run Code Online (Sandbox Code Playgroud)

我尝试了.map(s - > s.toArray(....))但是无法使T []转换为工作,IntFunction生成器工作,也没有使用Array.newInstance工作.我可能错过了一些东西,非常感谢任何建议.

请小心并提前感谢您的时间!

java arrays list java-8 java-stream

4
推荐指数
1
解决办法
138
查看次数

Spring Data Repository方法中如何使用Regex关键字

我目前正在使用spring-data-jpaversion 1.9.4

我有一个MySql表,其中包含列project(integer),summary(varchar)和description(varchar)。

我有一个正则表达式,我想用它来搜索摘要和/或描述字段,这意味着如果它在摘要中找到它,则无需将正则表达式应用于描述。

我尝试使用的存储库方法是:

List<Issue> findByProjectAndSummaryOrDescriptionRegex(long project, String regex)
Run Code Online (Sandbox Code Playgroud)

我收到的错误是:

java.lang.IllegalArgumentException:不支持的关键字REGEX(1):[MatchesRegex,Matches,Regex]

在我的公司环境中,很难更新/升级版本,因此如果问题不是我的语法,而是如果有人知道现在哪个版本支持“ Regex”进行查询派生,或者在哪里可以找到特定信息,我将不胜感激。 。我看过了Changelog,似乎1.9.4应该支持,但似乎没有。

谢谢你的帮助!

京东

编辑1:我知道@Query注释,但是我的领导要求我仅在无法找到支持关键字REGEX [MatchesRegex,Matches,Regex]的正确版本时才将其用作最后的选择

java mysql spring jpql spring-data-jpa

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

@ControllerAdvice 被所有控制器调用,而不仅仅是 basePackageClasses

我无法提供实际的代码,因为它位于另一个系统上,但我在 Spring 4.2.6 Web 版本中看到的问题是使用了 basePackageClasses,但实际上并未映射到控制器。

假设我有 3 个控制器:AController.class、BController.class 和 CController.class。

对于每个我都创建了一个ControllerAdvice:AControllerAdvice.class,BControllerAdvice.class&CControllerAdvice.class。

我使用注释如下:

@ControllerAdvice(basePackageClasses = AController.class)
public class AControllerAdvice{
  @ModelAttribute
  public void addModelInformation(Model model){
    //controller specific model information for header and footer added here
  }
}
Run Code Online (Sandbox Code Playgroud)

我所经历的是,当我在 AController.class 中调用休息方法时,我已经通过日志记录验证了从所有三个 ControllerAdvice 调用“addModelInformation”方法,因此 Spring 的排序调用的最后一个方法设置了标头和页脚的最终效果是页眉和页脚保持静态。

通过文档 Spring 应该支持,我的理解是,只应该调用位于该映射控制器中的其余方法的 ControllerAdvice。所以我不得不得出结论,我设置了一些错误的东西。我正在使用 JavaConfig,期待收到你们的来信!

java spring spring-mvc

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

标签 统计

java ×3

spring ×2

arrays ×1

java-8 ×1

java-stream ×1

jpql ×1

list ×1

mysql ×1

spring-data-jpa ×1

spring-mvc ×1