DynamicUpdate注解

DynamicUpdate注解

DynamicUpdate注解的作用

mysql中有一个字段 updatetime

想每次操作更改数据表的时候更改update字段

首先修改该字段的属性
Alter Table product_category MODIFY COLUMN update_time TIMESTAMP NOT null DEFAULT CURRENT_TIMESTAMP
on UPDATE CURRENT_TIMESTAMP

在实体类在加入@updatetime注解

在测试单元中添加对字段的修改,这个自动一定要修改过,不然时间不会更改;

代码:
测试方法

 @Test
    public void insterProduct(){
     
        Optional<ProductCategory> productCategory=productCategoryRepository.findById(1);
        ProductCategory product=productCategory.get();
        System.out.println("************"+product.toString());
        product.setCategoryType(10);
        productCategoryRepository.save(product);

        log信息:Hibernate: update product_category set category_type=? where category_id=?
     
        需要注意 DynamicUpdate注解默认为true
     
        源码:
     
        @Target({
     ElementType.TYPE})
       @Retention(RetentionPolicy.RUNTIME)
        public @interface DynamicUpdate {
     
    boolean value() default true;

}

​ 当把属性值更改为false时
​ log信息:Hibernate Hibernate: select productcat0_.category_id as category1_0_0_, productcat0_.category_name as category2_0_0_, productcat0_.category_type as category3_0_0_, productcat0_.create_time as create_t4_0_0_, productcat0_.update_time as update_t5_0_0_ from product_category productcat0_ where productcat0_.category_id=?
​ 此时只修改mysql字段为非空的属性,自动更新的字段updatetime不会更新

你可能感兴趣的:(Java,spring,java)