小编Der*_*ude的帖子

保存后JPA自动刷新

我的设置是Spring JPA/Hibernate/Oracle.

DB中有一个触发器,它对一行中的多个字段执行一些基本操作(例如,对保存为字符串的小数执行舍入).

当然,当我从ORM中保存所述行时,它不会获取触发器所做的更改,除非我执行了em.refresh(myRow).

由于我使用的是扩展JpaRepository的接口,因此我只能在使用repos的任何地方执行此操作(或实现此特定存储库并覆盖保存方法).

Hibernate还有一个@Generated注释可能会起作用,虽然它更像是一个hack,因为它不是它的用途.

可以用其他方式完成吗?

spring triggers hibernate jpa refresh

5
推荐指数
0
解决办法
520
查看次数

使用 OpenAPI Maven 插件生成 API 文档

我正在尝试/v3/api-docs为从 OpenAPI 3 yaml 生成的 Spring REST 应用程序生成 API 文档端点(例如)。

我注意到Maven 插件有一个generateApiDocumentation标志,但我不太确定它的作用。

不幸的是SpringFox还不支持 OpenAPI 3 —— 而且当我只想将初始 yaml 作为 json 公开时,拥有基于反射的生成器似乎毫无意义。

spring maven swagger openapi

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

Java 8从输入流读取到输出流,同时聚合项目

实际任务是能够通过从文件中读取来返回Stream,但是这样做而不将整个文件(或解析的集合)完全加载到内存中.该流的目的可以在以后确定 - 例如保存到DB.开发人员将拥有反序列化流的句柄(而不是反序列化的集合).

问题是,不能保证文件中的一行等于一个MyEntity对象(在这种情况下我可以使用这篇文章:http://blog.codeleak.pl/2014/05/parsing-file-with -stream-api-in-java-8.html)

通常,可以找到这样的情况:如果输入流,则需要返回通过将可变数量的输入流项映射到一个输出流项而构造的输出流.

所以,到目前为止,我的解决方案是使用供应商,如下所示:

public class Parser{

    public Stream<MyEntity> parse(final InputStream stream) {
        return Stream.generate(new AggregatingSupplier(stream));
    }
    private class AggregatingSupplier implements Supplier<MyEntity> {

        private final Scanner r;

        public AggregatingSupplier(final InputStream source) {
            this.r= new Scanner(source);
        }

        @Override
        public MyEntity get() {
            MyEntity re=new MyEntity();
            while (r.hasNextLine() &&!re.isComplete()){
                String line=r.nextLine();
                // ... do some processing
            }
            return re;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这种方法的问题在于使用Stream.generate获得的流是无限的.没有停止条件.抛出一个异常(有点).或者选择完全不同的(经典)方法.

java stream java-8 java-stream

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

标签 统计

spring ×2

hibernate ×1

java ×1

java-8 ×1

java-stream ×1

jpa ×1

maven ×1

openapi ×1

refresh ×1

stream ×1

swagger ×1

triggers ×1