在调用保存字符串 ID 之前,必须手动分配此类的 ID

2023-11-21

已经阅读了很多关于同一问题的问题,但我仍然无法解决这个问题。

我需要有一个String我的数据库上的主键。

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class MyClass {

    @Id
    private String myId;
    private String name;

    // getters and setters..

}

问题是,如果我使用String输入一个@Id带注释的字段,当我尝试保存对象时,Hibernate 抛出异常。

ids for this class must be manually assigned before calling 

是的,我正在为该字段设置一个值。

我发现的解决方法:

  1. Add @GeneratedValue字段注释 - 不起作用
  2. 将字段类型更改为Integer- 这对我来说不可行
  3. 添加一个接收构造函数myId作为参数public MyClass(String myId){ ... }- 没有工作
  4. 使用 UUID - 我不能,因为这个 id 是由 POST 请求中的字段设置的。

这些解决方法都不适合我。

UPDATE

我正在使用 Spring Boot 和 Spring Data JPA。

我如何插入:

我有一个@PostMapping带注释的方法,它处理 POST 请求并调用执行一些业务逻辑的服务并调用我的存储库进行持久化。

我发布的请求:

{
    "myId": "myId",
    "name": "myName"
}

MyService.java

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class MyService {

    @Autowired
    private MyRepository myRepository;

    public MyClass save(MyClass myClass) {
        return myRepository.save(myClass); // save() should persist my object into the database
    }
}

尝试这种方法

@Entity
public class MyClass{

    @Id
    @GeneratedValue(generator = “UUID”)
    @GenericGenerator(
        name = “UUID”,
        strategy = “org.hibernate.id.UUIDGenerator”,
    )
    @Column(name = “id”, updatable = false, nullable = false)
    private UUID id;

    …
}

=======================================

我像这样调用,在我的环境中一切正常:

@Autowired
private EntityManager entityManager;

@PostMapping("")
@Transactional
public void add(@RequestBody MyClass myClass){
        entityManager.persist(myClass);
}

并请求通过邮寄方式发送正文:

{
    "myId" : "213b2bbb1"
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在调用保存字符串 ID 之前,必须手动分配此类的 ID 的相关文章

随机推荐

  • 在Scheme中捕获宏

    使用定义捕获宏的最简单方法是什么define syntax or define syntax rule在球拍 作为一个具体的例子 这是一个简单的例子aif在 CL 风格的宏系统中 defmacro aif test if true opti
  • Chrome - 多个请求

    每当我使用 chrome 向我的 web 应用程序发送 GET 请求时 根据我的 apache 访问日志 两个相同的请求 并非总是如此 但大多数时候 我无法重现它 它不是针对 favicon 发送到服务器 尽管 chrome 开发工具中只显
  • 如何更改 ASP.NET Core 中本地开发的默认 SSL 证书?

    在 Linux 上运行本地 ASP NET Core 应用程序时 如何将自己的证书配置为 Kestrel 使用的 默认 证书 我知道我可以运行dotnet dev certs https命令生成新的开发证书 但这将生成新的自签名证书 我不想
  • distance Between() 返回的结果不准确?

    I use distanceBetween Location 类来计算两点之间的距离 如下所示 private float getDistanceInMiles GeoPoint p1 GeoPoint p2 double lat1 dou
  • 设置列名 ddply

    如何设置汇总数据的列名 library plyr ddply data col1 col2 nrow like in ddply data col1 col2 function x data frame number nrow x 也许您正
  • 如何在控件聚焦时持续显示工具提示?

    如何在控件聚焦时持续显示工具提示 我已经尝试了很多事情 但似乎没有任何效果 现在我有类似以下内容
  • Angular - 无法按工作进行 ng-repeat order

    我已经尝试了很多 ng repeat 和 orderBy 的例子 但我无法让我的 json 与它一起工作 div div div release environment id div div div 和 JSON f
  • 获取CPU/内存利用率的跨平台方法[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 寻找一个库或相当跨平台的方法来获取 C C 中的 CPU 利用率 内存利用率等 除了 getrusage 之外 我需要整个系统 而不是一个进程 我查
  • Data Studio 中的自定义查询出现无效日期错误

    我正在尝试在 Data Studio 中使用自定义查询 BigQuery 准备图表 但是 在使用 Data Studio 日期参数时出现无效日期错误 DS START DATE and DS END DATE 这是我的查询 SELECT c
  • 访问共享网络文件夹

    我需要通过 VBA 访问网络文件服务器上托管的文件夹 该文件夹只能通过我有用户名和密码的服务帐户 与普通用户帐户不同 以书面形式访问 通过 UI 我可以看到该文件夹 并将其映射为本地驱动器 但为了以书面形式访问它 我需要从 Windows
  • “错误:选项 --single-version-externally-management 无法识别”表示什么?

    我似乎突然开始遇到错误error option single version externally managed not recognized使用时pip install与各种包 包括PyObjC and astropy 我以前从未见过这
  • ZLib Inflate() 失败并显示 -3 Z_DATA_ERROR

    我试图通过调用 inflate 函数来解压缩文件 但即使我使用网站上的示例程序 它也总是失败并出现 Z DATA ERROR 我想也许我的 zip 文件不受支持 我在下面附上了 zip 标题的图片 这是我编写的用于执行解压缩的函数 我一次读
  • 为什么用户定义的移动构造函数会禁用隐式复制构造函数?

    当我阅读 boost shared ptr hpp 时 我看到了这段代码 generated copy constructor destructor are fine if defined BOOST HAS RVALUE REFS exc
  • 如何知道 Firefox 中是否单击了刷新按钮或浏览器后退按钮? [复制]

    这个问题在这里已经有答案了 在 Firefox 中如何知道是否单击了刷新按钮或单击了浏览器后退按钮 对于这两个事件 onbeforeunload 方法是一个回调 对于 Internet Explorer 我的处理方式如下 function
  • ReactJS - FCM 无法在 safari 浏览器中工作[重复]

    这个问题在这里已经有答案了 我正在尝试在我的 ReactJS 应用程序中实现 FCM 推送通知 它在 chrome 和 firefox 浏览器中完美运行 但在 safari 浏览器中遇到问题 FirebaseError 消息传递 此浏览器不
  • 应用程序提供的字体列表 (iOS)

    有谁知道如何从 Xcode 中 info plist 文件中的 应用程序提供的字体 键获取自定义字体列表 谢谢 以下代码从 Info plist 中读取自定义字体文件列表 并从字体文件中提取完整的字体名称 部分代码复制自https stac
  • 在 .NET 应用程序中使用 ApacheFOP v1.0

    有人成功地将 Apache FOP v1 0 库编译为 NET DLL 吗 我正在使用位于以下位置的 IKVM 语法 http onjava com pub a onjava 2004 08 18 ikvm html 然而 编译后的DLL似
  • Karma 错误 - 未知提供商:$$asyncCallbackProvider

    尝试通过 grunt 运行我的业力测试 但出现错误 Error injector modulerr Failed to instantiate module ngMock due to Error injector unpr Unknown
  • 如何动态改变ImageView高度

    我有一个用于 ListView 单元格的简单线性布局 它有一个图像视图 图像将从互联网下载 因此尺寸可以不同 但是 我想将imageview的宽度设置为fill parent 这是固定的 并在运行时动态改变图像高度 设置图像高度的规则 如果
  • 在调用保存字符串 ID 之前,必须手动分配此类的 ID

    已经阅读了很多关于同一问题的问题 但我仍然无法解决这个问题 我需要有一个String我的数据库上的主键 import javax persistence Entity import javax persistence Id Entity p