博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
@DynamicInsert使用问题
阅读量:4224 次
发布时间:2019-05-26

本文共 3134 字,大约阅读时间需要 10 分钟。

    在代码中,想让数据库中的一个字段在无数据插入时使用默认值

    持久类代码如下

@Entity@Table(name = "dormitory")@DynamicInsert(true)@DynamicUpdate(true)public class Dormitory implements Serializable{    private int ID;    private String adress;    private Set
students = new HashSet<>(); private int number; public Dormitory() { } public Dormitory(String adress, int number) { this.adress = adress; this.number = number; } public Dormitory(String adress) { this.adress = adress; } @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic public int getID() { return ID; } public void setID(int ID) { this.ID = ID; } @Column(name = "adress",nullable = false,length = 20) @Basic public String getAdress() { return adress; } public void setAdress(String adress) { this.adress = adress; } @OneToMany @JoinColumn(name = "dormitory_id") public Set
getStudents() { return students; } public void setStudents(Set
students) { this.students = students; } @Column(name = "number",columnDefinition = "INT default 4") @Basic public int getNumber() { return number; } public void setNumber(int number) { this.number = number; }} 测试类如下
public class StuTest {    @Test    public void hello(){        Dormitory dormitory = new Dormitory("6#522");        DormitoryDao dormitoryDao = new DormitoryDao(HibernateUtils.getSessionFactory());        dormitoryDao.insertDormitory(dormitory);        dormitoryDao.commit();    }}
输出的语句为
insert     into        dormitory        (adress, number)     values        (?, ?)
这是因为持久化类中number属性用的是int,int未赋值时默认0,解决办法很简单,吧它改成Integer
修改后的持久化类
@Entity@Table(name = "dormitory")@DynamicInsert(true)@DynamicUpdate(true)public class Dormitory implements Serializable{    private int ID;    private String adress;    private Set
students = new HashSet<>(); private Integer number; public Dormitory() { } public Dormitory(String adress, Integer number) { this.adress = adress; this.number = number; } public Dormitory(String adress) { this.adress = adress; } @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic public int getID() { return ID; } public void setID(int ID) { this.ID = ID; } @Column(name = "adress",nullable = false,length = 20) @Basic public String getAdress() { return adress; } public void setAdress(String adress) { this.adress = adress; } @OneToMany @JoinColumn(name = "dormitory_id") public Set
getStudents() { return students; } public void setStudents(Set
students) { this.students = students; } @Column(name = "number",columnDefinition = "INT default 4") @Basic public Integer getNumber() { return number; } public void setNumber(Integer number) { this.number = number; }}
依然使用上个测试
hibernate输出的SQL为
insert     into        dormitory        (adress)     values        (?)
Integer是类,所以默认是null

 

转载地址:http://hngmi.baihongyu.com/

你可能感兴趣的文章
UVM:8.2.2 重载的方式及种类
查看>>
UVM:8.2.3 复杂的重载
查看>>
UVM:8.2.4 factory 机制的调试
查看>>
UVM:8.3.1 重载transaction
查看>>
UVM:8.3.2 重载sequence
查看>>
leetcode171.[math] Excel Sheet Column Number
查看>>
Log4j配置
查看>>
java发送https请求
查看>>
java发送https请求证书问题
查看>>
js新消息提醒
查看>>
js窗体消息提醒
查看>>
深入Hibernate映射文件(二)——<hibernate-mapping>的属性
查看>>
详解在Spring中进行集成测试
查看>>
Struts2中过滤器和拦截器的区别
查看>>
51单片机:led灯闪烁10次后熄灭
查看>>
安卓:okhttp请求,获取返回数据
查看>>
安卓:股票筛选及分析系统
查看>>
Effective Java 学习笔记一 Object的方法
查看>>
使用 ctypes 进行 Python 和 C 的混合编程
查看>>
用scikit-learn学习DBSCAN聚类
查看>>