小编Sud*_*ari的帖子

如何使用 spring 数据 jpa 仅更新模型中的传入字段?

我正在使用 Spring 数据 jpa 进行持久化。说,我必须更新一个模型。该模型具有“n”个字段以及一个主键。

    {
    "some_model":{
        "id":"5527716",
        "field_one": "44248156",
        "field_two": "44248156",
        "field_three": "44248156",
        "field_four": "44248156",
        "field_five": "44248156",
        "field_six": "44248156",
        "field_seven": "44248156",
        "field_eight": "44248156",
        "field_nine":"65037768"     
    }
}
Run Code Online (Sandbox Code Playgroud)

考虑上面的 json 作为我的模型的表示,我只想更新那些传入 json 的字段(主键是 Id,它将始终存在)。有什么方法可以实现而无需明确检查每个字段并设置它们?

假设我收到如下请求:

{
    "some_model":{
        "id":"5527716",
        "field_one": "44248156",
        "field_two": "44248156",
        "field_three": "44248156",

        "field_eight": "44248156",
        "field_nine":"65037768"     
    }
}
Run Code Online (Sandbox Code Playgroud)

我想仅使用 repository.save 或类似的东西来实现更新(upsert 类型的东西)。当前使用存储库的 save 方法在内部使用 primaryKey 值更新模型,但将缺失字段的值设置为 null。我希望这些字段保持不变。

主要问题是:有数百个模型,每个模型大约有 10-15 个字段,明确检查每个字段并更新所有模型将是一场噩梦。

我还检查了@DynamicUpdate注释,但它似乎适用于优化生成的 sql 的显式设置。

我将不胜感激有关此的任何想法。

java spring hibernate spring-data-jpa spring-boot

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

标签 统计

hibernate ×1

java ×1

spring ×1

spring-boot ×1

spring-data-jpa ×1