我有一个用例,我只有很少的持久对象的更新字段,其中包括表的主键。在这种情况下,我想只更新这些字段的行。我发现hibernate没有为开箱即用提供任何解决方案,所以我自己编写了一个方法,它使用反射来确定对象的所有非空字段,并基于此创建更新查询并最终执行它。我的应用程序是使用spring框架编写的。截至目前,我的方式是,我有一个单独的util类,它有一个更新方法,它接受一个会话对象,主键,主键值和表名。这是实现此用例的好方法吗?有关改善这一点的任何建议吗?
答案 0 :(得分:0)
我的问题不明确。对于更新,您可以执行选择然后保存。或者只是创建该实体并保存它(这里必须使用主键)。由于您想要更新,您可以使用第一种方法。这里无需担心必填字段。
答案 1 :(得分:0)
大部分时间的原因之一是,由于在实体的POJO中使用原始数据类型,导致在要保留的实体的可空字段中保存默认值。 请检查您是否使用任何原语。如果是,切换到相应的包装类,然后保存。保存或更新后,它应该在提交时将null传递给数据库 希望这能解决你的问题:)