1. 实体类使用lombok的化,需使用两个注解
@Data
@EqualsAndHashCode(callSuper=false)
2. 实体类添加乐观锁注解
@OptimisticLocking(type = org.hibernate.annotations.OptimisticLockType.VERSION)
3. 实体类添加version属性,映射数据库字段
/**
* hibernate 版本控制字段,乐观锁
*/
@Column(name = "version")
@Version
private Integer version;
完整示例代码如下:
package cn.jorian.learn.learnspringhibernatecrud.core.user;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedAttributeNode;
import javax.persistence.NamedEntityGraph;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Version;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.OptimisticLocking;
import cn.jorian.learn.learnspringhibernatecrud.core.base.BaseEntity;
import cn.jorian.learn.learnspringhibernatecrud.core.dept.Dept;
import cn.jorian.learn.learnspringhibernatecrud.core.role.Role;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
/**
* @author jorian ye
*/
@Data
@EqualsAndHashCode(callSuper=false)
@Table(name = "user")
@Entity
@OptimisticLocking(type = org.hibernate.annotations.OptimisticLockType.VERSION)
public class User{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "UUID")
@GenericGenerator(name = "UUID", strategy = "uuid")
@Column(name = "id")
private String id;
/**
* user name
*/
@Column(name = "username")
private String username;
/**
* password
*/
@Column(name = "password")
private String password;
/**
* hibernate 版本控制字段,乐观锁
*/
@Column(name = "version")
@Version
private Integer version;
}