hibernate - 在 Hibernate 中使用注释的dynamicUpdate=true 不起作用

标签 hibernate annotations

即使在使用org.hibernate.annotations.entity(dynamicUpdate=true)的实体类注释中使用dynamicUpdate=true(用于更新选择性列而不是所有列)之后,hibernate也会尝试更新表的所有字段并且由于我对少数列有“非空”约束,因此它会引发异常。如何解决这个问题?请尽快提供帮助..

最佳答案

要使动态更新正常工作,您应该首先从 hibernate 中获取对象,然后更改字段。

p = session.get(Person.class,1);
p.setFirstName("Kamal");

这将导致查询仅更新first_name列。

以下内容无效。它将发出更新查询,并将所有其他列设置为 null。

p = new Person()
p.setId(1)
p.setFirstName("Kamal")
session.update(p)

如果您只想更新某些列,可以使用 update HQL 命令。不建议这样做 - 因为它会绕过缓存。正确的方法是上面概述的方法,加载对象,然后更改需要更改的字段。

关于hibernate - 在 Hibernate 中使用注释的dynamicUpdate=true 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12277891/

相关文章:

java - Spring数据分页

java - JDBC 类型没有方言映射

java - 如何使用 Hibernate 将 UUID 作为主键在两个表中共享?

r - 将带有相关系数的斜体 r 添加到 ggplot 中的散点图

android - 如何触发 Gradle 上的最小任务以运行 apt 插件

java - 在 Hibernate 拦截器中获取已保存实体的 id 的方法

hibernate 读取功能显示旧数据

java - 禁用 JavaDocs 的注解

java - Spring MVC 基于注释的 Controller 和@RequestMapping 的缩小问题

java - 执行上下文 :component-scan programatic way?