即使在使用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/