我的数据库上需要一个string
主键。
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class MyClass {
@Id
private String myId;
private String name;
// getters and setters..
}
问题是,如果我在@id
注释字段中使用string
类型,那么当我尝试保存对象时,Hibernate会抛出一个异常。
ids for this class must be manually assigned before calling
是的,我正在为字段设置一个值。
@generatedvalue
批注添加到字段-未工作integer
-这对我是不可行的myId
作为参数的构造函数public MyClass(String myId){...}
-未工作这些变通办法对我都没用。
更新
我发布的请求:
{
"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"
}
我有一个包含字段名、姓、性别、电子邮件、密码、DOB、地址和角色的user类。 我想创建电子邮件作为我的主键,因此我有@id,但由于它是字符串类型,我不能使用@Generation注释。每当我尝试在Db中插入一个新用户时,我都会得到一个错误,嵌套的异常是org.hibernate.id.IdentifierGenerationException:在使用根本原因调用save():com.niit.m
我知道这个问题以前可能有人问过,但我没有得到一个解决我的问题的方法。我有一个varchar(20)的categoryID的主键列,实体类通过id属性映射到该主键列。在添加数据时,它采用通过UI输入的id值,但在编辑其他字段并通过UI保存时,它抛出异常“IdentifierGenerationException:在调用save()之前必须手动分配该类的id:” 请找到下面的代码: 在过去的两天里,请
我在Hibernate和映射方面遇到了一些问题。 下面是我的功能: 每次调用函数时,我都得到: 对于此行: 我不明白为什么。因为在这种情况下,不需要手动分配位置的id,因为它是自动生成的。我一定是做错了什么,但三天后,我没有发现。 如果将来对其他人有帮助,只需通过以下方法修改id的参数:
问题内容: 我在hibernate映射方面遇到了一些问题。就像这里 : 当我打电话给我时,出现异常: 为何hibernate无法单独使用这些ID?怎么了 问题答案: 首先-它不能生成它们,因为您没有告诉它怎么做。使用并选择所需的策略。 然后-您不能有两个字段。如果您想使用复合ID,请使用或
我有这个我解决不了的问题,这是我的实体类: 最后一行是失败的,如果我移除它们,它起作用,我的意思是,它可以保存主题,但当我尝试这样做,它失败,我不知道如果我做错了什么,请帮助我!!