表sql: java
CREATE TABLE `cc_xing` ( `id` int(11) NOT NULL AUTO_INCREMENT, `status` tinyint(4) DEFAULT '1', `type` int(2) DEFAULT '3', `count` int(2) NOT NULL DEFAULT '2', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, `is_deleted` bit(1) NOT NULL DEFAULT b'0', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
實體類sql
package com.dipont.service.cc.entity; import java.util.Date; 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.SQLDelete; import org.hibernate.annotations.Where; @Entity @SQLDelete(sql = "update cc_xing set is_deleted = 1 where id = ?") @Where(clause = "is_deleted = 0") @Table(name = "cc_xing") public class XingEntity { private Long id; private int status; private byte type; private int count; private Date createTime; private Date updateTime; private boolean deleted; @Id @Column(name = "id") @GeneratedValue(strategy = GenerationType.IDENTITY) public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Column(name = "status", insertable = false) public int getStatus() { return status; } public void setStatus(int status) { this.status = status; } @Column(name = "type", insertable = false) public byte getType() { return type; } public void setType(byte type) { this.type = type; } @Column(name = "count", insertable = false) public int getCount() { return count; } public void setCount(int count) { this.count = count; } @Column(name = "create_time", insertable = false, updatable = false) public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } @Column(name = "update_time", insertable = false, updatable = false) public Date getUpdateTime() { return updateTime; } public void setUpdateTime(Date updateTime) { this.updateTime = updateTime; } @Column(name = "is_deleted", insertable = false) public boolean getDeleted() { return deleted; } public void setDeleted(boolean deleted) { this.deleted = deleted; } }
注意: 當sql 中有默認值的時候,
1. 咱們若是是建立實體對象,那麼save(entity) 會按照默認的值進行設置值,而不會按照咱們本身設置的this
2. 當咱們更新實體對象時,這個時候咱們設置值是有效的hibernate