本文共 1624 字,大约阅读时间需要 5 分钟。
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 ;}二、MongoDB、Solr
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 ;}
转载地址:http://beadi.baihongyu.com/