gpt4 book ai didi

java - 如何使用 Hibernate 有选择地更新 Spring bean 的属性?

转载 作者:太空宇宙 更新时间:2023-11-04 14:27:40 26 4
gpt4 key购买 nike

给定一个域对象,例如:

class MyPojo
get/setA
get/setB
get/setC

如果我使用 MyPojo 作为表单的 modelAttribute,则其内容如下:

 <form:form modelAttribute="myPojo" action="nextPage" method="POST">
<form:input path="a"/>
<form:input path="b"/>
</form>

我有一个 Controller 方法,例如:

@RequestMapping(value = {"/nextPage"}, method = RequestMethod.POST)
public String theNextPageMethod(@ModelAttribute("myPojo") MyPojo myPojoObj) {
//call to a service/dao impl are omitted for brevity
//but the dao impl does:
sessionFactory.getCurrentSession().saveOrUpdate(myPojoObj);
}

Spring/Hibernate 使用属性“a”和“b”的表单输入值更新 myPojoObj,但在我的例子中,它还将属性“c”的值设置为 null。

这是预期的行为吗?如果是这样,保留分配给属性“c”的任何值的最佳实践是什么?是否有注释或其他方式仅更新属性“a”和“b”?

澄清:理想情况下,我正在寻找允许更新一个页面上的“a”和“b”以及另一个页面上的“b”和“c”的东西,并针对每个特定请求保持所有其他属性静态。

最佳答案

您想在哪里存储实体的状态? session 、 View 还是数据库?

添加

@SessionAttributes({"myPojo"})

到您的 Controller

或者在 View 中使用带有 c 值的隐藏输入字段

或者使用 @ModelAttribute 注释 Controller 方法,并在每次请求时从数据库返回实体

您还可以仅为表单创建一个新的、更小的 POJO,并使用 Dozer 将值复制到真实实体或从真实实体复制值,并使用动态更新。

关于java - 如何使用 Hibernate 有选择地更新 Spring bean 的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26499982/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com