我有一个客户表,其中有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必须在同一事务中。

10-07 23:11