今天小编在用hibernate设置字段的默认值的时候遇到的一个小问题,特意分享一下,以免后来人继续犯错。。
小编的pojo层的代码是这样写的。。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| 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") private String status;
}
|
但是这样在插入数据进数据库的时候是会报下面这个错误的。。。

就是说,这个字段在执行hibernate生成的sql语句的时候,字段status还是空的(null),小编设置的默认值完全不管用。。0
小编在网上找到了解决的方法。。
就是往类名上面加上一个注解。。。@DynamicInsert
这个注解的作用如下(小编在网上查到一位大神的博客,截图下来的)。。

这个注解的功能就是,当hibernate生成insert语句的时候会把值为null的字段过滤掉,不加入insert语句的参数中。
小编猜想,hiebernate给字段设置默认值是在hibernate生成的insert语句执行之后再生成一条insert语句,专门插入status的值。。
你们觉得呢。。。。。
————————————————
原文链接:https://blog.csdn.net/LuciferMS/article/details/77803115