spring-data-jpa实现乐观锁只需要一个注解
@Version
@Entity
@Table(name = "dataexchange_channel")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ChannelDO extends BaseDO {
@Id
@Column(name = "channel_id", nullable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long channelID;
/**
* 0 未删除 1 已删除
* int 默认之为0
*/
private int isDelete;
/**
* 版本号
*/
@Version
private Integer version;
}
DAO
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import paas.dao.model.ChannelDO;
@Repository
public interface ChannelDao extends JpaRepository<ChannelDO, Long> {
}
使用时先查询出对象,再save即可,版本号不能自加时报错
悲观锁使用@Lock 注解即可,加在需要加锁的方法上即可
@Repository
public interface ChannelDao extends JpaRepository<ChannelDO, Long> {
@Lock(LockModeType.PESSIMISTIC_READ )
public List<ChannelDO> findAll();
}