Play FrameWork javax.persistence.OptimisticLockException: Data has changed.

本文探讨了在使用mssqlserver数据库时遇到的numeric数据类型转换为float时出现的数据溢出问题,并提供了一种解决方案:通过使用BigDecimal类型进行中间转换。

报这种错,其中一个原因可能是你使用了ms sqlserver数据库,里面有一个numeric数据类型

这个数据类型在与float类型转换的过程中会出现数据溢出的现象,导致接下来的数据库操作出现问题。

解决方案 : 在程序中使用BigDecimal类型来接收numeric类型

再用BigDecimal.floatValue() 将其转化为float进行操作。


真心觉得恶心。

### 问题分析 在项目中遇到无法找到 `javax.persistence:javax.persistence-api:jar:3.1.0` 的依赖问题,主要原因是该依赖可能不存在于指定的 Maven 仓库(如阿里云 Maven 仓库)。以下是详细的解决方案和相关说明。 --- ### 解决方案 #### 1. 检查依赖是否存在 `javax.persistence:javax.persistence-api:3.1.0` 并不是一个官方存在的 Maven 依赖。实际上,JPA 规范的依赖通常是由 `javax.persistence:javax.persistence-api` 提供,但其版本号最高为 `2.2`[^2]。如果需要使用更高版本的 JPA API,应考虑迁移到 Jakarta EE 的相关依赖。 对于 Jakarta Persistence,可以使用以下依赖替代: ```xml <dependency> <groupId>jakarta.persistence</groupId> <artifactId>jakarta.persistence-api</artifactId> <version>3.1.0</version> </dependency> ``` #### 2. 配置正确的 Maven 仓库 如果仍然希望使用 `javax.persistence`,需要确保 Maven 项目配置了正确的仓库地址。默认情况下,Maven 中央仓库已经包含了 `javax.persistence:javax.persistence-api:2.2`。如果需要从阿里云 Maven 仓库下载依赖,可以添加以下配置: ```xml <repositories> <repository> <id>aliyun</id> <url>https://maven.aliyun.com/repository/public</url> </repository> </repositories> ``` #### 3. 替换为兼容的依赖 如果项目中确实需要 JPA 相关功能,建议使用 Spring Boot 提供的自动配置功能,并通过 `spring-boot-starter-data-jpa` 引入依赖。该 Starter 已经集成了必要的 JPA 和数据库驱动依赖[^4]。 示例配置如下: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> ``` #### 4. 迁移到 Jakarta EE 如果项目计划长期维护或升级到最新技术栈,建议迁移到 Jakarta EE 的相关规范。Jakarta Persistence 是 JPA 的后续版本,支持更高的版本号(如 `3.1.0`)。迁移步骤包括: - 将所有 `javax.*` 包名替换为 `jakarta.*`。 - 更新相关依赖至 Jakarta EE 版本。 --- ### 示例代码 以下是一个完整的 Maven 配置示例,展示了如何正确引入 JPA 或 Jakarta Persistence 依赖: ```xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <dependencies> <!-- 使用 Jakarta Persistence (推荐) --> <dependency> <groupId>jakarta.persistence</groupId> <artifactId>jakarta.persistence-api</artifactId> <version>3.1.0</version> </dependency> <!-- 或者使用 JPA (兼容旧项目) --> <dependency> <groupId>javax.persistence</groupId> <artifactId>javax.persistence-api</artifactId> <version>2.2</version> </dependency> <!-- Spring Boot 数据访问支持 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> </dependencies> <repositories> <repository> <id>aliyun</id> <url>https://maven.aliyun.com/repository/public</url> </repository> </repositories> </project> ``` --- ### 注意事项 - 如果项目中同时存在 `javax.servlet-api` 和 `servlet-api` 依赖,需注意版本冲突问题[^3]。建议统一使用 `javax.servlet-api` 并设置版本为 `3.1.0` 或更高。 - 在迁移过程中,确保所有第三方库也已更新至支持 Jakarta EE 的版本。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值