相关疑难解决方法(0)

2个JPA实体在同一个表上

假设我有一个包含200列的表,其中大多数从未使用过.

我将SmallEntity映射到经常使用的10列.我在与其他实体的关联中使用它.它加载速度快,消耗少量内存并让我开心.

但有时我需要显示200列.我想在200列上映射BigEntity类.它没有其他实体,它没有任何关联.

问题:你有这方面的经验吗?您是否意识到Hibernate会遇到任何问题,例如在一级缓存,脏检查和实体生命周期中?

java orm hibernate jpa

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

如何使用springframework BeanUtils copyProperties忽略空值?

我想知道如何使用Spring Framework将属性从Object Source复制到Object Dest忽略null值.

我实际上使用Apache beanutils,使用此代码

    beanUtils.setExcludeNulls(true);
    beanUtils.copyProperties(dest, source);
Run Code Online (Sandbox Code Playgroud)

去做吧.但现在我需要使用Spring.

有帮助吗?

多谢

java spring copy notnull

22
推荐指数
4
解决办法
3万
查看次数

如何仅更新已更改的属性 - Spring MVC

我的控制器

@RequestMapping(value = "/user/{id}", method = RequestMethod.GET)
public String updateUserById(@PathVariable("id") Long id, Model model) {
    User user = userRepository.findOne(id);
    model.addAttribute(user);
    return "admin/editUser";
}

@RequestMapping(value = "/user/{id}", method = RequestMethod.POST)
@ResponseBody
public String updateUserById(@PathVariable("id") Long id, @ModelAttribute User user) {
    userRepository.updateUser(id, user); // with a try catch
}
Run Code Online (Sandbox Code Playgroud)

@Override
public void updateUser(Long id, User user) {
    User userDB = userRepository.findOne(id);
    userDB.setFirstName(user.getFirstName());
    userDB.setLastName(user.getLastName());
    userDB.setEmail(user.getEmail());
    userDB.setUsername(user.getUsername());
    userRepository.save(userDB);
}
Run Code Online (Sandbox Code Playgroud)

这种方法有效但对我来说非常难看.假设用户刚刚更改了视图中的firstname字段,如何调整我的代码只调用函数来设置firstname?

像Observer模式通知字段有变化?

java model-view-controller spring

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

更新JPA实体中的一个字段

我有一个User在一个函数中被赋予系统特权的实体.我有一个网页,您可以从下拉列表中选择用户并将表单提交给服务器.在服务器端,我想只更新该实体的一个字段.

我的用户实体将具有除了设置的一个字段及其id之外的所有对象的默认值.我是否需要findById更新特定字段然后进行合并,或者有没有办法告诉只更新该字段?

jpa

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

使用部分更新在REST中实现PATCH方法的官方方法

我绝对没有找到完全自动进行部分更新的明确方法(可以通过比较数据库和部分对象中的逐字段对象来实现)。

我看到了一些类似的曲目:

  • 在这里,但我不知道它的魔力是什么MapperService
  • 在这里,但是非常丑陋,我确信存在更好的解决方案
  • 在这里,但我不知道使用heavyResourceRepository哪种save(Map<String, Object> updates, String id)方法的存储库类型是什么
  • 还是可以/必须使用ModelMapper映射不为null的字段?
  • 这里的覆盖copyProperty方法

谢谢您,可以使用PATCH方法,但是我看不到实现它的明确方法。

rest hibernate http-method spring-boot spring-rest

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

如何使用 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
查看次数

如何通过使用 auto-ddl=update 更改 JPA 中的实体来更改表

我将实体UserInfoEntity、变量名称从“moblie”更改为“mobile”,然后重新启动服务器。当我查看表格时,我发现表格没有删除“移动”列。这是我的实体变化;

由此;

@Entity
@Table(name = "pe_userinfo")
public class UserInfoEntity {
    private String moblie;
}
Run Code Online (Sandbox Code Playgroud)

对此;

@Entity
@Table(name = "pe_userinfo")
public class UserInfoEntity {
    private String mobile;
}
Run Code Online (Sandbox Code Playgroud)

java hibernate spring-data-jpa

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