id、name、ageの3つの列があるcustomerテーブルがあります。
年齢のない顧客オブジェクトを作成する場合、つまり年齢値を設定しない場合、同じ顧客(顧客IDで識別される)がテーブルに存在する場合、saveOrUpdate()は年齢列を0に更新します。年齢列の値がすでにテーブルに存在する場合、ゼロまたはnullで上書きされないようにしようとしています。たとえば、以下に貼り付けたコードスニペットのように、顧客ID 10の行がすでに存在する場合、年齢値は次のようになります。この場合、私の年齢はゼロで上書きされるべきではありません。
私はグーグルで検索し、それを達成するために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();