小编mem*_*und的帖子

如何在maven中将父版本定义为属性?

我使用以下依赖项作为我的父项maven pom.xml:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.1.6.RELEASE</version>
</parent>
Run Code Online (Sandbox Code Playgroud)

如果我将版本定义为属性<version>${spring-boot.version}</version>我收到以下错误:

项目生成错误:非解析父POM:故障转移org.springframework.boot:弹簧引导起动父:POM:从$ {弹簧boot.version} http://repo.spring.io/milestone是缓存在本地存储库中,在弹簧里程碑的更新间隔过去或强制更新之前,不会重新尝试解析.原始错误:无法传输工件org.springframework.boot:spring-boot-starter-parent:pom:$ {spring-boot.version} from/to spring-milestones(http://repo.spring.io/milestone) :索引85处路径中的非法字符: http: //repo.spring.io/milestone/org/springframework/boot/spring-boot-starter-parent/ $ {spring-boot.version}/spring-boot-starter- parent - $ {spring-boot.version} .pom和'parent.relativePath'指向错误的本地POM

那么是不可能将父版本定义为maven属性?

spring maven spring-boot

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

如何将多个日期搜索与Spring Data JPA的CrudRepository结合起来?

spring-data提供了一种通过定义方法名称来生成SQL搜索的方法.

以下工作正常:

@Entity
public class Book {
  Date from, to;
}

//CrudRepository<Book>
findByFromDateBetween(Date departure, Date arrival);
Run Code Online (Sandbox Code Playgroud)

但为什么以下不起作用呢?

findByFromDateBetweenAndToDateBetween(Date departure, Date arrival);
Run Code Online (Sandbox Code Playgroud)

要连接两个日期搜索,我必须重复日期:

findByFromDateBetweenAndToDateBetween(Date departure, Date arrival, Date departure, Date arrival);
Run Code Online (Sandbox Code Playgroud)

问题:是否可以重复使用参数?

java postgresql spring spring-data-jpa

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

如何使用Java 8流迭代嵌套for循环引用父元素?

我想使用java8迭代嵌套列表streams,并在第一次匹配时提取列表的一些结果.不幸的是,如果子元素与过滤器匹配,我还必须从父内容中获取值.

我怎么能这样做?

// java7

Result result = new Result();

//find first match and pupulate the result object.
for (FirstNode first : response.getFirstNodes()) {
    for (SndNode snd : first.getSndNodes()) {
        if (snd.isValid()) {
            result.setKey(first.getKey());
            result.setContent(snd.getContent());
            return;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

// java8

 response.getFirstNodes().stream()
        .flatMap(first -> first.getSndNodes())
        .filter(snd -> snd.isValid())
        .findFirst()
        .ifPresent(???); //cannot access snd.getContent() here
Run Code Online (Sandbox Code Playgroud)

java optional java-8 java-stream

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

如何在Spring中使用@NamedQuery一个CrudRepository @Query?

我想利用@NamedQuery里面的一个JpaRepository.但它不起作用:

public interface MyEntityRepository extends JpaRepository<MyEntity, Long> {
    @Query(name = MyEntity.FIND_ALL_CUSTOM)
    List<MyEntity> findAllCustom(Pageable pageable);
}

@Entity
@NamedQuery(
    name = MyEntity.FIND_ALL_CUSTOM, query = "select * from MyEntity me where me.age >= 18"
)
public class MyEntity {
    public static final String FIND_ALL_CUSTOM = "findAllCustom";
}
Run Code Online (Sandbox Code Playgroud)

结果:

org.springframework.data.mapping.PropertyReferenceException: No property findAllCustom found for type MyEntity!
    at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:75)
    at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:327)
    at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:307)
    at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:270)
    at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:241)
    at org.springframework.data.repository.query.parser.Part.<init>(Part.java:76)
    at org.springframework.data.repository.query.parser.PartTree$OrPart.<init>(PartTree.java:235)
    at org.springframework.data.repository.query.parser.PartTree$Predicate.buildTree(PartTree.java:373)
    at org.springframework.data.repository.query.parser.PartTree$Predicate.<init>(PartTree.java:353)
    at org.springframework.data.repository.query.parser.PartTree.<init>(PartTree.java:84)
    at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.<init>(PartTreeJpaQuery.java:61)
    at …
Run Code Online (Sandbox Code Playgroud)

java spring spring-data spring-data-jpa

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

如何设置Spring应用程序的日志文件名并登录到tomcat/logs文件夹?

如何设置相对于tomcat dir的日志记录路径/logs/mylog.log

我尝试了什么:改变logging.file房产application.properties

保留文件名:#logging.file=- >所有内容都记录到控制台,因此写入tomcat/logs/localhost.yyyy-mm-dd.log

logging.file=mylog.log - >写入控制台,与#logging.file相同

logging.file=d:/mylog.log - >写到位置d:/mylog.log

logging.file=../logs/mylog.log - >写入控制台,因此仍然是localhost*.log

没有成功.我对外部化配置不感兴趣,例如通过提供系统或环境变量.

java spring tomcat spring-boot

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

将列表转换为地图 - foreach或stream?

我想把a List<String>变成a Map<String, Integer>.列表的值应作为键,地图值将静态初始化.

我想保持列表的顺序,因此使用a LinkedHashMap,并忽略重复.

问题:使用java8 streamAPI 有什么优势吗?因为,比较以下内容,只是关于语法我永远不会去详细的流api,但总是坚持旧的foreach循环:

    //foreach
    Map<String, Integer> map = new LinkedHashMap<>();
    for (String k : abk) {
        if (k != null) map.put(k, STATIC_VAL);
    }

    //streams
    Map<String, Integer> map2 = abk.stream()
            .filter(Objects::nonNull)
            .collect(Collectors.toMap(
                        Function.identity(),
                        k -> STATIC_VAL,
                        (v1, v2) -> v1,
                        LinkedHashMap::new));
Run Code Online (Sandbox Code Playgroud)

你会坚持使用旧方法还是使用新的lambda表达式?

java java-8 java-stream

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

如何并行处理文件的行?

我想读取一个大文件,处理每一行并将结果插入数据库.我的目标是并行处理行,因为每个进程都是一个冗长的任务.因此,我希望一个线程继续读取,多个线程继续处理,并且一个线程继续以块的形式插入到db.

我把它分解如下:

1)按顺序逐行读取文件(简单)

2)将每一行发送到线程池(3个线程),因为处理是长时间运行的任务.在线程池忙时阻止进一步读取行.

3)将每个处理行从每个theadpool写入StringBuffer

4)监视缓冲区大小,并将结果以块的形式写入数据库(例如,每1000个条目)

ExecutorService executor = Executors.newFixedThreadPool(3);

StringBuffer sb = new StringBuffer();

String line;
AtomicInteger count = new AtomicInteger(0);
while ((line = reader.read()) != null) {
    count.getAndIncrement();
    Future<String> future = executor.submit(() -> {
        return processor.process(line);
    });

    //PROBLEM: this blocks until the future returns
    sb.append(future.get());

    if (count.get() == 100) {
        bufferChunk = sb;
        count = new AtomicInteger(0);
        sb = new StringBuffer();

        databaseService.batchInsert(bufferChunk.toString());
    }
}
Run Code Online (Sandbox Code Playgroud)

问题:

  • future.get() 将永远阻止读者,直到一个未来返回结果

  • 缓冲区"监控"可能做得不对

可能我不是以正确的方式做这件事.但是我怎样才能做到这一点?

旁注:filesize大约是10GB,所以我不能先将整个文件读入内存来准备并行任务.

java future executorservice

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

选择Selenium Webdriver的链接?

如何选择selenium webdriver的链接?

之前的Selenium将通过以下方式完成:

    selenium.click("link=Users");
Run Code Online (Sandbox Code Playgroud)

但是我怎么能用webdriver做同样的事情呢?

我想过

    driver.findElement(By.partialLinkText("Users")).click();
Run Code Online (Sandbox Code Playgroud)

但这不起作用.没有点击链接!

<html>
<body>
<div id="mainpage" class="mainpage">
<div id="pageid" class="pageid">
<div id="body">

<table>
<tbody>
<tr>
<td>
<table>
<tbody>
<tr>
<td>
<div id="id_menu" class="mymenu">
<ul>
<li class="li_class ">
<a href="/user.xhtml">Users</a>
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

    org.openqa.selenium.NoSuchElementException: Unable to locate element: 
{"method":"partial link text","selector":"Users"} Command duration or timeout: 11.36 
seconds For documentation on this error, please visit: http://seleniumhq.org/exceptions
/no_such_element.html Build info: version: '2.24.1', revision: '17205', time: '2012-06-19 
17:28:14' System info: os.name: 'Windows XP', os.arch: 'x86', os.version: '5.1', 
java.version: '1.7.0_02' Driver …
Run Code Online (Sandbox Code Playgroud)

java selenium xpath selenium-webdriver

7
推荐指数
2
解决办法
5万
查看次数

如何在没有 SELECT 的情况下调用 postgres 中的函数?

我为我创建了以下函数postgresql

CREATE FUNCTION myfunc(param INT) RETURNS VOID AS..
Run Code Online (Sandbox Code Playgroud)

如果没有 ,我该如何调用该函数SELECT?当我运行时SELECT myfunc(1)它会工作,即使它不会按设计返回任何内容。

但我想在没有 select, just 的情况下运行它myfunc(1),这不起作用并告诉我Syntax error at 1

我正在尝试在 PostgreSQL 中的重复更新中实现插入中的 db_merge 函数?

我无法SELECT db_merge(..)从 java 运行,因为这会给我一个"A result was returned when none was expected."), PSQLState.TOO_MANY_RESULTS)错误。

java postgresql jdbc

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

如何将Jdbc4Connection转换为PGConnection?

我想利用postgres,CopyManager如:

CopyManager cp = ((PGConnection) dataSource.getConnection()).getCopyAPI();
Run Code Online (Sandbox Code Playgroud)

正如我所使用的那样spring-boot,数据源是a org.apache.tomcat.jdbc.pool.DataSource,因此是连接a Jdbc4Connection.

问题:转换会抛出以下错误:

java.lang.ClassCastException: com.sun.proxy.$Proxy55 cannot be cast to org.postgresql.PGConnection
Run Code Online (Sandbox Code Playgroud)

此外,当我尝试强制转换为Jdbc4Connection时,我得到了同样的错误!

java.lang.ClassCastException: com.sun.proxy.$Proxy55 cannot be cast to org.postgresql.jdbc4.Jdbc4Connection
Run Code Online (Sandbox Code Playgroud)

我能做什么?

java postgresql spring spring-boot

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