hibernate在用注解设置字段的默认值时遇到的问题

今天小编在用hibernate设置字段的默认值的时候遇到的一个小问题,特意分享一下,以免后来人继续犯错。。

小编的pojo层的代码是这样写的。。


package com.Shayla.pojo;


import java.io.Serializable;


import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;


import org.hibernate.annotations.DynamicInsert;




@Entity
@Table(name="t_user")
public class User implements Serializable{


private static final long serialVersionUID = 1L;

  @Id
  @GeneratedValue(strategy=GenerationType.AUTO)    //主键生成策略
  private Integer id;
  private String username;
  private String password;
  private String nickname;
  @Column(nullable=false,columnDefinition="Integer default 1")   //这里是设置这个字段的默认值是Integer类型并且值为1
  private String status;
//省略getter和setter方法。。。。。
}

但是这样在插入数据进数据库的时候是会报下面这个错误的。。。


就是说,这个字段在执行hibernate生成的sql语句

的时候,字段status还是空的(null),小编设置的默认值完全不管用。。0



小编在网上找到了解决的方法。。

就是往类名上面加上一个注解。。。@DynamicInsert

这个注解的作用如下(小编在网上查到一位大神的博客,截图下来的)。。


这个注解的功能就是,当hibernate生成insert语句的时候会把值为null的字段过滤掉,不加入insert语句的参数中。


小编猜想,hiebernate给字段设置默认值是在hibernate生成的insert语句执行之后再生成一条insert语句,专门插入status的值。。


你们觉得呢。。。。。


猜你喜欢

转载自blog.csdn.net/luciferms/article/details/77803115
今日推荐