假设我有一个包含200列的表,其中大多数从未使用过.
我将SmallEntity映射到经常使用的10列.我在与其他实体的关联中使用它.它加载速度快,消耗少量内存并让我开心.
但有时我需要显示200列.我想在200列上映射BigEntity类.它没有其他实体,它没有任何关联.
问题:你有这方面的经验吗?您是否意识到Hibernate会遇到任何问题,例如在一级缓存,脏检查和实体生命周期中?
我想知道如何使用Spring Framework将属性从Object Source复制到Object Dest忽略null值.
我实际上使用Apache beanutils,使用此代码
beanUtils.setExcludeNulls(true);
beanUtils.copyProperties(dest, source);
Run Code Online (Sandbox Code Playgroud)
去做吧.但现在我需要使用Spring.
有帮助吗?
多谢
我的控制器
@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模式通知字段有变化?
我有一个User在一个函数中被赋予系统特权的实体.我有一个网页,您可以从下拉列表中选择用户并将表单提交给服务器.在服务器端,我想只更新该实体的一个字段.
我的用户实体将具有除了设置的一个字段及其id之外的所有对象的默认值.我是否需要findById更新特定字段然后进行合并,或者有没有办法告诉只更新该字段?
我绝对没有找到完全自动进行部分更新的明确方法(可以通过比较数据库和部分对象中的逐字段对象来实现)。
我看到了一些类似的曲目:
MapperServiceheavyResourceRepository哪种save(Map<String, Object> updates, String id)方法的存储库类型是什么copyProperty方法谢谢您,可以使用PATCH方法,但是我看不到实现它的明确方法。
我正在使用 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 的显式设置。
我将不胜感激有关此的任何想法。
我将实体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 ×5
hibernate ×4
spring ×3
jpa ×2
spring-boot ×2
copy ×1
http-method ×1
notnull ×1
orm ×1
rest ×1
spring-rest ×1