JPA的乐观锁@Version在不同的DB中,Version类的包位置不一样,如果配置错误了,则不起乐观锁的作用,程序不会报错。
一、MySQL
1.Version引入的javax.persistence.Version
2.数值可以使用java.sql.TimeStamp,这样java中不使用赋值,修改时直接采用MySQL中的时间戳,可以当修改时间用。
@JsonFormat加上Pattern变可以显示想要的时间格式
具体配置如下:
import lombok.*;
import javax.persistence.*;
import java.sql.Timestamp;
/**
* Created by UI03 on 2017/7/17.
* Version: 1.0.0
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString(callSuper = true)
@Entity
@Table(name = "act")
public class AccountEntity{
/**
* 用户ID
*/
@Column(name = "uid")
private Long userId;
/**
* 创建时间
*/
@Column(name = "tsct")
private long createTimestamp;
/**
* 乐观锁 version
* JsonFormat前端展示转化
* 例子 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
*/
@Column(name = "ver")
@Version
private Timestamp version ;
}
1.Version引入的org.springframework.data.annotation.Version
2.数值不可以使用java.sql.TimeStamp(不起作用),可以使用long类型,修改后自动加1,这样修改时间需要单独字段记录。
具体配置如下:
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.Version;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
/**
* Created by UI03 on 2018/1/8.
*/
@Data
@Document(collection = "uss")
public class UserStudyInfoEntity {
/**
* 用户ID
*/
@Field("uid")
private long userId ;
/**
* 创建时间
*/
@Field("tsct")
private long createTimeStamp ;
/**
* 修改时间
*/
@Field("tsup")
private long updateTimeStamp ;
/**
* version 乐观锁
*/
@Field("ver")
@Version
private long version ;
}