JPA乐观锁@Version在MySQL、MongoDB、Solr中的配置及注意

本文介绍如何在MySQL和MongoDB/Solr中实现JPA乐观锁,并提供具体的代码示例。针对不同数据库特性,选择合适的Version注解及数据类型确保并发安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 ;

}








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值