我有一个客户表,其中有3列,即ID,名称和年龄。
如果我创建一个没有年龄的客户对象,即我没有设置任何年龄值,那么如果表中存在同一客户(由客户ID标识),则saveOrUpdate()会将年龄列更新为0。为了避免年龄列值被零或null覆盖(如果已存在于表格中)。例如根据下面粘贴的代码段,如果已经存在具有年龄值的客户ID 10行,那么在这种情况下,我的年龄不应被零覆盖。
我在google上搜索,发现可以将dynamicUpdate设置为true来实现。但是在执行代码时,我的年龄值仍然被0覆盖。我正在粘贴代码段
@Entity
@Table(name = "CUSTOMER")
@org.hibernate.annotations.Entity(
dynamicUpdate = true
)
public class Customer {
@Id
@GeneratedValue
@Column(name = "CUSTOMER_ID")
private int custId;
@Column(name = "CUSTOMER_NAME")
private String custName;
@Column(name = "CUSTOMER_AGE")
private int custAge;
............
...........
Customer cust = new Customer();
cust.setCustId(10);
cust.setCustName("anand");
session.saveOrUpdate(cust);
tx.commit();
最佳答案
要使dynamicUpdate工作,get和update必须在同一事务中。