Hibernate bean使用数据库默认值保存数据

  • 问题场景
      在用Hibernate过程中,MySQL数据库中datetime属性字段,设置默认值为0000-00-00 00:00:00,not null。
  • 解决办法
      在用bean插入数据时无法设置Date类型的时间为0000-00-00 00:00:00,并且对象属性默认为null,无法执行保存。考虑用数据库中的默认值来实现插入时的字段值设置。

用到Hibernate的注解@DynamicInsert(true)和@DynamicUpdate(true)

user table
idint
namevarchar
joindatedatetime
user bean
@Entity
@DynamicInsert(true)
@DynamicUpdate(true)
@Table(name = "user")
public class MyUserBo implements Serializable {
	private static final long serialVersionUID = 1L;
	
	@Id
	@GenericGenerator(name = "idGenerator", strategy = "increment")
	@GeneratedValue(generator = "idGenerator")
	private int id;

	@Column(name = "name")
	private String name;

	@Column(name = "joindate")
	private Date joinDate;
	......
Test
@Test
	public void foo() {
		
		MyUserBo user = new MyUserBo();
		user.setName("张三");
		serverService.save(user);
		MyUserBo user2 = new MyUserBo();
		user2.setName("李四");
		user2.setJoinDate(new Date());
		serverService.save(user2);
		MyUserBo userBo = serverService.find(MyUserBo.class, 2);
		System.out.println(userBo);
		userBo.setName("王五");
		serverService.save(userBo);
	}
result

1未设置joinDate属性,会默认设置默认值为字段的值,2设置joinDate属性,使用设置的值为字段的属性

Hibernate: select max(id) from my_user
Hibernate: insert into my_user (name, id) values (?, ?)
Hibernate: insert into my_user (joindate, name, id) values (?, ?, ?)
Hibernate: select myuserbo0_.id as id1_3_0_, myuserbo0_.joindate as joindate2_3_0_, myuserbo0_.name as name3_3_0_ from my_user myuserbo0_ where myuserbo0_.id=?
MyUserBo [id=1, name=张三, joinDate=null]
Hibernate: select myuserbo0_.id as id1_3_0_, myuserbo0_.joindate as joindate2_3_0_, myuserbo0_.name as name3_3_0_ from my_user myuserbo0_ where myuserbo0_.id=?
Hibernate: update my_user set name=? where id=?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值